Getting nächsten element by id
-
09-06-2019 - |
Frage
Ich habe zwei Elemente:
<input a>
<input b onclick="...">
Wenn b geklickt wird, möchte ich den Zugriff auf ein und manipulieren Sie einige seiner Daten.Eine nicht haben eine weltweit eindeutige Namen, so-Dokument.getElementsByName ist aus.Der Blick in die event-Objekts, dachte ich, event.Ziel.parentNode würde eine Funktion zu haben wie getElementsByName, aber dies scheint nicht der Fall zu sein mit <td>en.Gibt es eine einfache Möglichkeit, dies zu tun?
Lösung
Wenn a
und b
sind neben einander und haben die gleichen Eltern, Sie verwenden können die prevSibling
Eigenschaft b
zu finden a
.
Andere Tipps
Sie sollten in der Lage sein zu finden, das element, auf das geklickt wurde von der event-Objekt.Abhängig von Ihrem browser, möchten Sie vielleicht
e.target
odere.srcElement
.Der folgende code stammt aus diesem w3schools Beispiel:function whichElement(e) { var targ; if (!e) var e = window.event; if (e.target) { targ=e.target; } else if (e.srcElement) { targ = e.srcElement; } if (targ.nodeType==3) { // defeat Safari bug targ = targ.parentNode; } var tname; tname = targ.tagName; alert("You clicked on a " + tname + " element."); }
Sie können dann die
nextSibling
undprevSibling
DOM-traversal-Funktionen. Einige mehr Informationen hier.Und doch wieder eine Referenz für w3schools XML-DOM-Knoten.
Prototyp auch hat nette Funktionen zu bewegen, in den DOM.In Ihrem Beispiel so etwas wie das folgende würde den trick tun:
b.up().down('a')
Und wenn es ist mehr als ein ein element auf dieser Ebene haben Sie die macht von CSS-Selektoren zu Ihrer hand, um Sie genau festlegen, welches element Sie wollen
Lassen Sie Ihre plain-vanilla-JavaScript-hinter.Get JQuery-es wird Sie sparen eine Menge Zeit.