Hallo,
Mir fällt dazu nur outerHTML ein, denn nodeName lässt sich ja leider nur lesen, nicht ändern.
DOM 3 bietet renameNode und wird wohl auch von neueren Mozilla-Browsern implementiert:
alert(document.renameNode)
, aber mit Elementknoten laeuft da offenbar noch nichts (Bugreport).
Alternativ hilft vielleicht dieser Versuch:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Test by TM 09/05</title>
<script language="JavaScript" type="text/javascript">
<!--
function Test()
{
// vorher
alert(document.body.innerHTML);
var td=document.getElementById("tabzelle");
var tdinhalt=td.firstChild.cloneNode(true);
var th=document.createElement("th");
var at=td.attributes;
for(i=0;i<at.length;i++)
{
if(at.item(i) && at.item(i).nodeValue!="" && at.item(i).nodeValue!=null)
{
th.setAttribute(at.item(i).nodeName,at.item(i).nodeValue);
}
}
th.appendChild(tdinhalt);
td.parentNode.replaceChild(th,td);
// nachher
alert(document.body.innerHTML);
}
//-->
</script>
</head>
<body onload="Test()">
<table>
<tr>
<td id="tabzelle" bgcolor="yellow"><em>Text</em></td>
</tr>
</table>
</body>
</html>
MfG, Thomas