Ich versuche, eine Liste in JavaScript (nicht mit jQuery) aller Elemente auf der Seite mit einem bestimmten Klassennamen zu erhalten. Ich bin daher der getElementsByClassName() Funktion verwenden, wie folgt:Warum liefert getElementsByClassName von JavaScript ein Objekt, das NICHT ein Array ist?
var expand_buttons = document.getElementsByClassName('expand');
console.log(expand_buttons, expand_buttons.length, expand_buttons[0]);
Bitte beachte, dass ich auf meiner Seite mit der Klasse drei Ankerelemente ‚erweitern‘. Diese console.log() gibt
[] 0 undefined
nächstes für Tritte, ich expand_buttons in seine eigene Reihe warf wie folgt:
var newArray = new Array(expand_buttons);
console.log(newArray, newArray.length);
Diese plötzlich
gibt[NodeList[3]] 1
und ich kann klicken durch die Nodelist und sehen Sie die Attribute der drei 'erweitern' Ankerelemente auf der Seite. Es ist auch erwähnenswert, dass ich meinen Code in einem w3schools test page arbeiten konnte.
Es kann auch sein, dass meine Verwendung von document.getElementsByName tatsächlich (an die Konsole) ein Array von Elementen ausgibt, aber wenn ich nach seiner Länge frage, sagt es mir 0. In ähnlicher Weise, wenn ich versuche, zuzugreifen ein Array-Element mit array_name[0]
als normal, gibt es "undefiniert", obwohl eindeutig ein Element innerhalb eines Arrays, wenn ich das Objekt auf der Konsole drucken.
Hat jemand eine Idee, warum dies sein könnte? Ich möchte nur DOM-Elemente durchlaufen, und ich vermeide gerade jQuery, weil ich versuche, mit JavaScript-JavaScript zu programmieren.
Danke,
ParagonRG
Überprüfen Sie, ob diese Funktion nicht geändert wird –
Haben Sie Ihren Code ausgeführt, nachdem das DOM erstellt wurde oder vorher? –
[Seien Sie vorsichtig mit w3schools.] (Http://w3fools.com) – Pointy