Hallo,
hilfe, kann kein Javascript mehr! (Nicht daß ich jemals... ;-))
Ich blende verschiedene divs, die alle dieselbe CSS-class haben, aber unterschiedliche ids, einzeln via Javascript und mouseover auf einem Link ein. Das klappt (verkürzt) wie immer so:
if (lastlayer!=-1) {hidelayer(lastlayer);}
document.getElementById(layerid).style.display = "block";
lastlayer=layerid;
(reduziert auf DOM-relevante Befehle, die Funktion hidelayer() funktioniert analog mit display = "none")
Nun möchte ich, nachdem diese divs einmal eingeblendet sind, dieselben an anderer Stelle, auf einem anderen Link, wieder ausblenden. Dort sind jedoch die ids nicht bekannt, deshalb sollen sie anhand ihrer gemeinsamen CSS-class identifiziert werden.
Diese schöne Funktion soll mir dabei helfen (ist nicht von mir, ich dachte aber, sie verstanden zu haben):
function getElementsByClassName(className)
{
var arr = new Array();
var elems = document.getElementsByTagName("div");
for(var i = 0; i < elems.length; i++)
{
var elem = elems[i];
var id = elem.getAttribute("id");
var cls = elem.getAttribute("class");
if(cls == className)
{
arr[arr.length] = id;
}
}
// ab hier ist es wieder von mir, ich will jetzt
// die Array-Elemente mit style wieder unsichtbar stellen:
for (var j = 0; j < arr.length;j++){
document.getElementById(arr[j]).style.display = "none"
}
}
Das klappt einwandfrei und ohne Fehlermeldung im Firefox. IE6 macht überhaupt nichts, auch keine Fehlermeldung. Es hakt in der unteren for-Schleife. Firefox hat hier als arr[j] sauber die Namen der ids zur Verfügung, IE kennt sie anscheinend nicht, ein alert(arr[j]) in der Schleife hat keinen Effekt. Frage ich in der oberen Schleife elems[i] ab, gibt mir Firefox [object HTMLdivElement] zurück, IE jedoch nur [object].
Leider hab ich es nicht mehr geschafft, eine Beispielseite zu basteln. Aber vielleicht sieht ja jemand von Euch meinen Denkfehler. Ich bin noch 10 Minuten, und dann erst heute abend wieder am Rechner.
Danke fürs Draufschauen.
Gruß aus Köln-Ehrenfeld,
Elya
orange rocks :)