NodeNotFound
mathefritz
- html
- javascript
0 Gunnar Bittersmann0 mathefritz0 dedlfix
0 MudGuard
zum verzweifeln:
if ( !ln.P ){
xx = ln.childNodes[2].childNodes[1];
console.log(xx);
ln.childNodes[2].childNodes[1]
.replaceChild( mkImg(mSms,mSPls),
ln.childNodes[2].childNodes[1]
);
keine Beanstandung der Zuweisung an xx, richtige Ausgabe des console.log
ABER
Die "ln" ist eine <tr> mit 3 <td>, das 3te der <td> enthält 3 <img ...>
und das 2te letzterer soll ersetzt werden.
Ach ja, die childNodes[2].length ist angeblich undefined
@@mathefritz
Ach ja, die childNodes[2].length ist angeblich undefined
Für Tabellen gibt es die tBodies[]
-, rows[]
- und cells[]
-Collections sowie tHead
und tFoot
. Sollte man nutzen anstatt sich per childNodes[]
durchs DOM zu hangeln. http://www.javascriptkit.com/domref/tableproperties.shtml
Weiteres lässt sich sagen, nachdem du den Link zur problematischen Seite mitgeteilt hast.
LLAP 🖖
sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|
Hallo Gunnar,
leider verstehe ich nicht, wie Du es meinst;
Ein neuer Test mit
console.log(ln.childNodes.length); console.log(ln.childNodes[0]); console.log(ln.childNodes[1]); console.log(ln.childNodes[2]);
ergab:
3 Interac...tart.js (Zeile 30)
<td align="right"> Interac...tart.js (Zeile 31)
<td width="3em" align="center"> Interac...tart.js (Zeile 32)
<td align="left"> Interac...tart.js (Zeile 33)
NotFoundError: Node was not found
ln.childNodes[2].childNodes[1]
Link? eigentlich teste ich noch lokal; aber bitte sehr:
http://schmieder-laher.de/INARBEIT/
zu Starten mit
2terAbschnittNeu.html, der das Bild
und Arrays2.js nachholt,
was HilfsFunktionen.js nachholt,
was Initialisierungen.js nachholt,
was InteractionsStart.js nachholt; nun ist Clickhandlich scharf;
c und = klappen
Danke für Eure Mühe.
Tach!
Link? eigentlich teste ich noch lokal; aber bitte sehr:
Man kann die Arbeitsweise von Code mitunter nur dann untersuchen und das Problem erkennen, wenn einem auch die Daten vorliegen, mit denen der Code arbeiten soll. Ohne einen Link zum eigentlichen oder einem nachgestellten Problemfall ist es dann nicht oder nur schwer möglich zu helfen.
Dein Problem liegt darin, dass replaceChild() vom Eltern-Node aufgerufen werden muss. Du rufst es allerdings vom Image auf, und das hat keine Kinder, deshalb die Fehlermeldung. Aber eigentlich ist das Image das Kind, das es zu ersetzen gilt. replaceChild() muss also eine Ebene weiter oben angesetzt werden.
dedlfix.
Hallo dedlfix, danke, Du meinst also die Zeilen 34..36 sollen
ln.childNodes[2]
.replaceChild( mkImg(mSms,mSPls),
ln.childNodes[2].childNodes[1]
);
lauten - oja, klappt tatsächlich, und im "case: mSc" war's ja klar.
Herzlichen Dank für die schnelle Analyse. Fritz.
Hi,
xx = ln.childNodes[2].childNodes[1];
befinden sich whitespaces (i.e. text-nodes) zwischen den HTML-Elementen? Oder Kommentare? Beides zählt auch zu den childNodes ...
Willst Du statt childNodes evtl. lieber children benutzen? Da werden text-Knoten und Kommentare nicht mitgeliefert ...
cu,
Andreas a/k/a MudGuard
@@MudGuard
Willst Du statt childNodes evtl. lieber children benutzen?
In Tabellen eher nicht.
LLAP 🖖
sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|
Hi,
Willst Du statt childNodes evtl. lieber children benutzen?
In Tabellen eher nicht.
Deine Lösung aber auch eher nicht. Die betroffene Zelle scheint ja was besonderes zu sein - da sollte das auszutauschende Bild eigentlich identifiert worden sein.
Außerdem nehm ich hier leichtes Tabellenlayout-Aroma wahr ...
cu,
Andreas a/k/a MudGuard
Danke Andreas,
siehe Antwort an Gunnar.
Gruß Fritz.