2010-12-30 4 views
2

Ich versuche eine Methode zu schreiben, die alle Elemente eines bestimmten Klassennamens für Browser aufnimmt, die nicht über die Methode 'getElementsByClassName' verfügen. Dies funktioniert perfekt für Elemente, die serverseitig generiert werden. Die Seite kann jedoch Elemente aus irgendeinem Grund dynamisch hinzufügen. 'Window.document.all' erhält diese dynamischen Elemente nicht. Irgendwelche Ideen? Methode unten.Verwendung von document.getElementsByTagName findet keine dynamisch hinzugefügten Elemente (IE6)

function getClassName(class) { 
     var i, neededStuff = [], elements = document.getElementsByTagName('*'); 

     for (i = 0; i < elements.length; i++) { 
      if (elements[i].className == class) { 
       neededStuff[neededStuff.length] = elements[i]; 
      } 
     } 
     return neededStuff; 
    } 
+0

, was es mit 'getElementsByTagName' zu ​​tun? –

+0

oops, ich habe getElementsByTagName benutzt, aber dann auf 'window.document.all' um etwas zu testen, bevor ich gepostet habe. – ploosh

Antwort

4

class ist ein reserviertes Schlüsselwort in IE. Benutze es nicht wörtlich. Ändern Sie class in etwas wie theClass.

Versuchen Sie auch document.getElementsByTagName('*') anstelle von document.all, wenn die Änderung class es nicht tut.

EDIT:

http://work.arounds.org/sandbox/72

Works für mich perfekt in IE6^

mich dynamisch Lassen Sie versuchen Sie, ...

EDIT # 2: gut funktioniert ..

http://work.arounds.org/sandbox/72

+0

das hat nicht funktioniert, das gleiche ist passiert. – ploosh

+0

+1 Sollte wahrscheinlich 'getElementsByTagName' verwenden, da' document.all' [veraltet] ist (https://developer.mozilla.org/en/DOM/document). – user113716

+0

@invaderkay - Ihr getClassName ist zu einfach. Warum nicht eine komplexere Version verwenden? Du machst 'className =='. Die Klasse kann mehrere Werte enthalten. –

1

Verwenden jQuery :)

http://jquery.com/

$('.ClassName') 

Ihre Elemente zurückkehren :)

dann können Sie ändern, es Wert ist, Klassen ganz einfach hinzufügen!

Einige große Tutorials hier

http://docs.jquery.com/Tutorials

+0

Dies sollte ein Kommentar sein, da es das Problem im angegebenen Code nicht löst. – user113716

+0

@patrick True ... Es war im Grunde ein "Stop, was Sie tun und jQuery verwenden" Art der Antwort :) Und jQuery ist IE6 kompatibel. – turtlepick

+1

jQuery ist nicht immer die am besten geeignete Lösung. – user113716