Problem mit childNode
Patrick
- javascript
0 vermeide setAttribute0 Patrick
0 plan_B0 Patrick0 no-name
Hi Forum,
also ich erstelle einen ChildNode in dieser Form:
var newElement = 'MEIN CODE';
var newLi = document.createElement("li");
newLi.setAttribute("name","scroll_"+winCounter);
document.getElementById("innerScroll").appendChild(newLi);
newLi.innerHTML = newElement;
Das klappt im FF und IE.
Fürs löschen nehm ich das:
var toDestroy = document.getElementsByName("scroll_"+windowID)[0].firstChild;
document.getElementsByName("scroll_"+windowID)[0].removeChild(toDestroy);
Im FF klappt das auch wunderbar.
Nur der IE bringt Fehler und führt das Destroyen nicht aus.
IE7 meldet: document.getElementsByName(...).0.firstChild ist Null oder kein Objekt
Code: 0
Hat da jemand vielleicht eine Idee, wie ich das umschiffen kann?
Danke
Patrick
ersetze
newLi.setAttribute("name","scroll_"+winCounter);
durch
newLi.name="scroll_"+winCounter);
oder nimm stattdessen eine Id
newLi.id="scroll_"+winCounter);
um die komplizierte Syntax zum Aufruf über getElementsByName zu vermeiden.
Hi,
sorry, das haut nicht hin.
Wenn ich mein setAttribute durch newLi.name ersetzen, gehts es nicht, da hat der FF ein Problem.
Patrick
Wenn ich mein setAttribute durch newLi.name ersetzen, gehts es nicht, da hat der FF ein Problem.
und außerdem hat der FF eine hervorragende Fehlerkonsole - was meldet die denn?
Zudem: warum nimmst du keine ID?
Hallo,
sorry, das haut nicht hin.
Wenn ich mein setAttribute durch newLi.name ersetzen, gehts es nicht, da hat der FF ein Problem.
Das Problem besteht darin, dass du einem Element ein Attribut zuweisen willst, welches es eingetlich nicht besitzen darf (s. <http://de.selfhtml.org/html/referenz/attribute.htm#li@title=Attributreferenz: li>).
Falls der Name nur 1x in deinen Dokument vorkommt, kannst du IDs verwenden.
Möchtest du mehrere Elemente dieser Art verwenden, um später alle hintereinander löschen zu können, solltest du entweder Klassen verwenden (und später alle <li>s durchlaufen, abfragen und löschen) oder, was performanter ist, die Referenzen dieser Elemente in einem Array speichern, auf das du dann beim Löschen zugreifst.
mfg. Daniel
Hallo,
var newLi = document.createElement("li");
newLi.setAttribute("name","scroll_"+winCounter);
das kann der IE nicht, jedenfalls kannst du danach nicht das Element über eine Namencollektion ansprechen. Er versteht es nur so:
var newLi = document.createElement("li name='xy'");
http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/createelement.asp lese dort bei dyn. erzeugtem Name-Attribut weiter.
var toDestroy = document.getElementsByName("scroll_"+windowID)[0].firstChild;
document.getElementsByName("scroll_"+windowID)[0].removeChild(toDestroy);
sicherer wäre:
var toDestroy = document.getElementsByName("scroll_"+windowID)[0].firstChild;
toDestroy.parentNode.removeChild(toDestroy);
Gruß plan_B
Hi,
danke erst mal für die Infos!
Ich muss nicht unbedingt ein li nutzen.
Ich werde es mal mit einer Tabelle versuchen und dann hier berichten.
Danke
padde
Ich werde es mal mit einer Tabelle versuchen und dann hier berichten.
bedenke: Tabellen kennen auch kein name-Attribut
und
wens keine tabellarischen Daten sind ist eine Tabelle fehl am Platz