Hallo,
var bebold = document.getElementById("inhalt").firstChild.data;
document.write(bebold.big());
genommen.
Nun möchte ich aber nicht,dass nur der erste Kindknoten angesprochen wird, sondern sämtliche sich im angesprochenem ID-Bereich Befindenden, sprich, dass bei diesem Beispiel jetzt sämtlicher Text dick geschrieben wird, ganz gleich in welchem Knoten er liegt.
Idee: Man sucht die Textknoten, fuegt darueber B-Elemente ein und setzt die Texte (nodeValues) als neue Textknoten zwischen <B>...</B> und entfernt die alten Textknoten. Mal ein Versuch:
HTML:
<p id="absatz">
<span>Text</span>
<span>Text</span>
<span>Text</span>
</p>
Script:
function xyz()
{
var obj, anz, neu, txt;
obj=document.getElementById("absatz");
anz=obj.childNodes.length;
for(i=0;i<anz;i++)
{
if(obj.childNodes.item(i).nodeType==3)
{
neu=document.createElement("B");
txt=document.createTextNode(obj.childNodes.item(i-1).firstChild.nodeValue);
obj.childNodes.item(i-1).appendChild(neu).appendChild(txt);
obj.childNodes.item(i-1).firstChild.removeNode(false);
}
}
}
(Script mal <body onload="xyz()"> aufrufen.)
IE 6 stellt danach 3x "Text" fett dar, was man auch mittels
alert(document.documentElement.outerHTML);
pruefen kann: <SPAN><B>Text</B></SPAN>
Mozilla 0.9.7 macht nichts und Opera 6 stuerzt gnadenlos ab ...
Geht vermutlich auch noch cleverer ;-).
MfG, Thomas