@@alle:
Mit
alert("»" + document.getElementById("foo").innerHTML + "«");
alert("»" + document.getElementById("bar").innerHTML + "«");
gibt IE für
<p id="foo">foo</p>
<p id="bar">bar</p>
»foo« und »bar« aus – wie zu erwarten.
Selbes Ergebnis für
<div>
<p id="foo">foo</p>
<p id="bar">bar</p>
</div>
Nicht aber für
<ul>
<li id="foo">foo</li>
<li id="bar">bar</li>
</ul>
da gibt er »foo « und »bar « aus – mit angehängten Leerzeichen.
Dasselbe auch für
<ul>
<li id="foo">foo </li>
<li id="bar">bar </li>
</ul>
»foo « und »bar « – ebenfalls mit jeweils einem Leerzeichen. (*)
<ul>
<li id="foo">foo</li><li id="bar">bar</li>
</ul>
ergibt »foo« und »bar «.
<ul><li id="foo">foo</li><li id="bar">bar</li></ul>
ergibt »foo« und »bar«.
Dieselben Ergebnisse kommen bei 'firstChild.nodeValue' statt 'innerHTML'.
Was treibt den IE in den Wahnsinn, bei 'li'-Elementen nachfolgendes Whitespace in den Elementinhalt zu übernehmen?
Was kann man dagegen tun? Quelltext umzuformatieren kommt nicht infrage. Nachbehandlung mit Stringoperationen wegen (*) eigentlich auch nicht.
Irgeneine Chance, an die richtigen Inhalte der 'li'-Elemente zu kommen?
Live long and prosper,
Gunnar
Das einzige Mittel, den Irrtum zu vermeiden, ist die Unwissenheit. (Jean-Jacques Rousseau)