Ich erwarte, dass der folgende Code "out"this.nextSibling nicht funktioniert
<input type=text onfocus="alert(this.nextSibling.id)" />
<output id="out">this is output</output>
zu alarmieren, aber es warnt undefined WARUM?
Ich erwarte, dass der folgende Code "out"this.nextSibling nicht funktioniert
<input type=text onfocus="alert(this.nextSibling.id)" />
<output id="out">this is output</output>
zu alarmieren, aber es warnt undefined WARUM?
nextSibling
wählt den nächsten nächsten Knoten des Elements aus. Der nächste Knoten kann auch ein textNode
sein, der keine id
Eigenschaft hat, daher erhalten Sie den undefined
Wert. Wie die andere Antwort vorschlägt, könnten Sie die Eigenschaft nextElementSibling
verwenden, die sich auf den nächsten gleichgeordneten Knoten bezieht, der nodeType
von 1
hat (d. H. Ein Element-Objekt) oder die versteckten Zeichen zwischen den Elementen entfernen.
Beachten Sie, dass IE8 die nextElementSibling
Eigenschaft nicht unterstützt.
Versuchen Sie folgendes:
alert(this.nextElementSibling.id);
HINWEIS: Die nextSibling
Eigenschaft gibt den Knoten unmittelbar nach dem angegebenen Knoten in der gleichen Baumebene.
Die schreibgeschützte Eigenschaft nextElementSibling
gibt das Element zurück, das unmittelbar auf das angegebene Element in der untergeordneten Liste des übergeordneten Elements folgt, oder null, wenn das angegebene Element das letzte in der Liste ist.
dank Geck ich sehr weired war meine über die undefined Ausgabe –
Unter der Annahme, dass Sie
jQuery
Beachten Sie, dass this.nextSibling
might not work in IE specifically
Die jQuery
Alternative für this.nextSibling
ist $(this).next()
Warum würden Sie eine jQuery-Antwort auf eine Frage posten, die explizit nach einer JavaScript-Antwort fragt, und nirgendwo darauf hinweist, dass jQuery entweder verwendet wird oder eine Option ist? Vor allem nach achtzehn Monaten (während ich das schreibe)? –
@DavidThomas, ich stimme völlig zu, ich weiß, dass es alt ist, aber ich hasse es, wenn ich Fragen über JavaScript stelle und jemand eine vorgefertigte Bibliothek vorschlägt, ich meine, wie wir JavaScript lernen können, wenn wir faul sind und die bereits gemachten Skripte jedes Mal benutzen können schlagen Sie anderen vor, jQuery zu verwenden, wenn sie das wahre Javascript nicht erlernen möchten. –
aber verwenden können Code gibt es keine Knoten zwischen dem Inout-Element und Ausgabe und ich sehe nicht Ant versteckte Zeichen –
@moroccan_dev Bitte überprüfen Sie diese Fiddle und öffnen Sie die Konsole, um den angemeldeten Knoten zu sehen. http://jsfiddle.net/khcxjta5/ – undefined
@moroccan_dev versteckte Zeichen sind etwas, das Sie nicht sehen können, da sie ausgeblendet sind. In diesem Fall handelt es sich um die Zeilenumbruchzeichen. – cychoi