Ich fragte ursprünglich nach einer eleganten Möglichkeit, die Array.concat()
Funktionalität auf die Ergebnisse der getElementsByTagName
Funktion in IE oder älteren Browsern zu simulieren, weil es schien, dass concat
nicht unterstützt wurde. Nur natürlich - der Grund, warum das zurückgegebene Objekt dies nicht unterstützt, ist, dass es kein Array
ist. Hoppla!Javascript - Verkettung mehrerer NodeLists zusammen
getElementsByTagName
gibt tatsächlich eine NodeList
zurück. Die wirkliche Frage ist also: Was ist eine gute Möglichkeit, um eine einzige Liste aller Formularelemente in einem Dokument (Eingabe, Auswahl, Textbereich, Schaltfläche) zu erhalten, um sie durchzulaufen? Ein Array ist nicht erforderlich ... eine einzige NodeList
wäre auch perfekt.
Beachten Sie, dass ich IE6 verwende, wie dies für ein Firmenintranet (bald IE8 obwohl) ist.
Die Antwort, die ich kam mit war:
es einfacher geworden ist und ausgeführt wahrscheinlich besser, nur den Code in eine separate Funktion gesetzt und dreimal mit den verschiedenen Nodelisten zu nennen, anstatt zu befürchten ein guter Weg, sie zu einem zusammenzuflicken.
Ich wechselte schließlich zu MooTools (nach mehreren Stunden Lesen von Vergleichen aller verschiedenen Frameworks). Jetzt ist es sehr einfach, ein Array mit den gewünschten Elementen zu erhalten. Ich empfehle, ein JavaScript-Framework wie dieses zu verwenden, anstatt Leute, die ihre Gehirne heraus prügeln, die versuchen, den besten Weg zu finden, Sachen zu tun. Natürlich bin ich nur dafür, die rohe Sprache zu lernen (weshalb ich mich so lange auf ein Framework beschränkt habe), aber es ist nicht immer der schnellste Weg, Dinge in Gang zu bringen, was in einem Unternehmen oft so wichtig ist als Verbesserung der Fähigkeiten des Coders mit der Sprache.
Update: fast 2 Jahre später würde ich nur jQuery verwenden und damit fertig sein!
IE unterstützt dies, können Sie die Frage ein wenig klären? –
Mit jQuery ist definitiv der Weg zu gehen. In einem Fall, in dem ich keinen Zugriff auf jQuery hatte, stieß ich jedoch darauf. Am Ende habe ich ein Array von Element-Tags erstellt, auf denen ich agieren und es durchlaufen wollte, indem ich getElementsByTagName für jedes Element aufruft. Ich frage mich, ob das mehr oder weniger effizient ist als die beste Antwort. – bpscott
@bpscott Aber hast du alle Elemente an einem Punkt in ein Array gelegt oder arbeitest du nur mit einem Tag? – ErikE