innerHTML schluckt </li> tags

elvis3000

Grünschnabel
Hallo liebe Foren User,

ich habe jetzt schon etliche Seiten durchsucht aber noch keine passende Lösung zu meinem Problem gefunden.
Kurz gesagt gehts um Folgendes: ich habe ein div element in dem sich eine Liste befindet (<ul>/<ol>). Wenn ich nun dieses div Element mittels innerHTML auslese, passiert es mir dass alle </li> tags (also die schließenden listeneinträge) bis auf das letzte entfernt werden. Dies passiert aber nur im IE, FF liest den div korrekt aus.

kurzes Beispiel:
HTML:
<html>
	<head>
    		<title></title>
      		 <script type="text/javascript">
			window.onload = function () {
				var myObj = document.getElementById("test");
				var str = myObj.innerHTML;
				alert(str);
			}
		</script>
    </head>
    
    <body>
    	<div id="test">
        	<ul>
            	<li>A</li>
                <li>B</li>
                <li>C</li>
            </ul>
        </div>
	</body>
</html>
mein IE ist v7, bin ratlos.

Vielen Dank im Voraus
 
Hi

versuch mal ob das geht:
HTML:
<html>
	<head>
    		<title></title>
    </head>
    
    <body>
    	<div id="test">
        	<ul>
            	<li>A</li>
                <li>B</li>
                <li>C</li>
            </ul>
        </div>
        <input type="button" onclick="alert(document.getElementById('test').innerHTML);" />
	</body>
</html>
 
Ich glaube, man muss laut HTML-Standard nicht li abschließen (sieh SelfHTML).
Und wahrscheinlich korrigieren das einige Browser.
 
Moin,

damit wirst du irgendwie leben müssen :-(

Das ist der Quelltext, mit dem der IE gewissermassen arbeitet....dir wird ja bspw. auch aufgefallen sein, dass die Tags gross geschrieben sind.

Workaround fällt mir keiner ein :(
 
Du könntest eventuell vor jedem öffnenden li-Tag ein schließendes setzen, außer natürlich beim ersten Element. Dieses müsstest irgendwie herausfiltern, vllt. mit regulären Ausdrücken.
 
Hi.
Du könntest eventuell vor jedem öffnenden li-Tag ein schließendes setzen, außer natürlich beim ersten Element. Dieses müsstest irgendwie herausfiltern, vllt. mit regulären Ausdrücken.
Das kommt doch auf das gleiche Markup raus, wie hier eingangs gezeigt, nur mit etwas mehr Umständen verbunden, was die regulären Ausdrücke betrifft :suspekt:

Oder glaubst du ernsthaft, dass es der IE mit dieser Notation besser macht?

Selbst wenn du alles in einer Zeile schreibst, bleibt es beim selben Resultat.

mfg Maik
 
Wenn du weißt dass es eine Liste ist, könntest du die letzten 5 Zeichen (</ul>) abschneiden und an den String dann ein </li></ul> anhängen. Ist zwar ziemlich unschön aber immerhin ein korrekter Quellcode ;)
 
Hi.
Das kommt doch auf das gleiche Markup raus, wie hier eingangs gezeigt, nur mit etwas mehr Umständen verbunden, was die regulären Ausdrücke betrifft :suspekt:

Oder glaubst du ernsthaft, dass es der IE mit dieser Notation besser macht?

Selbst wenn du alles in einer Zeile schreibst, bleibt es beim selben Resultat.

mfg Maik

Ich dachte, er/sie will den Code dann irgendwie verarbeiten, bei dem das li wichtig ist.
 
Mag ja sein, aber dein Vorschlag juckt den IE in keinster Weise.

Und wenn Sven hierzu keinen Workaround kennt, dann will das schon was heißen.

mfg Maik
 

Neue Beiträge

Zurück