For these things I didn't find any good solutions.
Changing nodeName
This isn't possible via the nodeName property, since it's readonly. There are some workaround functions you can use, but the problem with these is that pointers to child objects of the element you change are lost. But you might for example use search and replace in the outerHTML. For example replace "<th" and "</th>" with "<td" and "</td>"
Printing node
Again, I only think workarounds do the job
window.print();
doesn't work for single elements. But still, you could hide the rest of the page with a media="print" style.