Ich habe ein <select>
Element auf meiner Seite, die onchange
propery gesetzt hat:Warum ist Element ParentNode nicht definiert, wenn von innerhalb von document.ready() und window.load() zugegriffen wird?
<select id="MySelect" onchange="return myOnChange(this);">Whatever</select>
Der Event-Handler so geht:
function myOnChange(select) {
var parentNode = select.parentNode;
//whatever
}
Sobald die Seite der Benutzer die Auswahl ändert sich in der Drop-down-geladen ist und der Event-Handler wird aufgerufen und parentNode
ist an etwas gebunden (was auch immer es ist, es ist nicht undefiniert und das ist genug).
Allerdings, wenn ich hinzufügen, ein document.ready()
:
$(document).ready(function() {
var select = $('#MySelect');
var parentNode = select.parentNode;
//whatever
});
oder window.load()
:
$(window).load(function() {
var select = $('#MySelect');
var parentNode = select.parentNode;
//whatever
});
dann einmal einer von ihnen aufgerufen wird, dann parentNode
nicht definiert ist.
Warum ist das? Wie wird mein Handler aufgerufen, nachdem die Seite geladen wurde, sodass parentNode
nicht undefiniert ist?
jQuery-Funktionen geben eine Knotenliste zurück, keinen DOM-Knoten. – Oriol
@Oriol Ich würde sagen, dass diese Frage nur ein Duplikat für Leute ist, die bereits wissen, dass es zwei Arten von Objekten gibt. Ich hatte keine Ahnung davon - für mich war es "hier arbeiten, aber nicht dort" und die Antwort war "es gibt zwei Arten von Objekten, hier ist, wie Sie auf die richtige zugreifen". – sharptooth