Nächstes Element mit nextSibling finden
Sanjoy
- javascript
Hallo liebe Helfer,
ich möchte das nächste bzw. erstmal das übergeordnete Element eines bestimmten Typs finden. Unten seht ihr denn vereinfachten HTML-Code und zwei Javascriptfunktionen, die nicht zum gewünschten Ziel führen. Ich möchte beim Klick auf den Button zunächst das übergeordnete Div Element und dann das nächste DIV Element finden. Das übergeordnete Div finde ich noch, allerdings führt element = element.nextSibling; nicht zum Ziel (element.nodeName = [object Text]!
Wo liegt mein Fehler? Wahrscheinlich gibt es sowieso einen viel besseren Weg!
<div id="div_f37">
<table>
<tr>
<td><label>text</label></td>
<td><input type="text" ... /></td>
<td><label>text</label></td>
<td><select ...><option value="">text</option><option></select></td>
<td>
<button type="button" onclick="findNextDiv(this)">Click</span></button>
</td>
</tr>
</table>
</div>
<div id="div_f38">
...
</div>
function findNextDiv (element) {
element = findUpperElement(element,"DIV")
element = element.nextSibling;
return element;
}
function findUpperElement (element,type) {
while (element.nodeName != type) {
element = element.parentNode;
}
return element;
}
Irgendwie hat das schon mal funktioniert?!
Vielen Dank und liebe Grüße
Sanjoy
Hi,
Das übergeordnete Div finde ich noch, allerdings führt element = element.nextSibling; nicht zum Ziel (element.nodeName = [object Text]!
Wo liegt mein Fehler?
darin, dass Du "sibling" als "Element" übersetzt. Das ist es jedoch nicht (in standardkonformen Browsern).
Irgendwie hat das schon mal funktioniert?!
Da hattest Du vermutlich keine Whitespace-Nodes zwischen den Elementen, und Dich somit auf Glück verlassen.
Cheatah
Vielen Dank für deine Antwort!
Wie mache ich es denn dann richtig?
Lieben Gruß
Sanjoy
Ist der Weg grundsätzlich nicht ratsam?
Ansonsten könnte ich ja auch element = element.nextSibling; solange durchführen bis ich das div gefunden habe und somit die whitespaces überspringen...
Lieben Gruß
Sanjoy
Hi,
Ansonsten könnte ich ja auch element = element.nextSibling; solange durchführen bis ich das div gefunden habe und somit die whitespaces überspringen...
solange, bis Du entweder das Element gefunden hast oder es nichts mehr gibt.
Cheatah