Hallo Cybaer,
Also ein Dummy-Klasse (".toggle { }"), die Zuweisung zu den betreffenen Elementen ("class='toggle'") und dann dynamisch in die Klasse reinschreiben, was Du gerade brauchst ("onClick='einaus();'"). Da ist selbst this überflüssig, da Du nicht die Objekte, sondern die Regel manipulierst.
also ich glaube, mein Ansatz ist immer noch ein anderer, ich habe es mal hochgeladen.
http://www.sprachlernspiele.de/selftests/klapptabelle/version6.html
Allerdings funktioniert das nicht unter IE6. Beide Zeilen der Funktion init(), im folgenden mit "// diese" markiert, funktionieren einzeln auch im IE6; nur nicht zusammen. In den anderen Browsern ist das kein Problem. Der IE tauscht aber in der vorliegenden Version nur die Hintergrundgrafik aus, klappt die Zeilen aber nicht mehr auf. Wenn ich statt über die className- über das style-Eigenschaft gehe, dann klappt aber auch beides zusammen. Hast du eine Erklärung dafür?
grupos[i].className='hide';
var j = 0;
while(grupos[i].childNodes[j].nodeName!='TR'){
j++;
}
grupos[i].childNodes[j].onclick = onOff; // diese
var k = 0;
while(grupos[i].childNodes[j].childNodes[k].nodeName!='TH'){
k++;
}
grupos[i].childNodes[j].childNodes[k].className='first'; //diese
Ich habe versucht ein Skript zu schreiben, das man nur noch so wie es ist einbinden muss, den zu dynamisierenden Tabellen die Klasse class="dyn" verpassen, alles andere, inklusive der Eventhandler und der jeweils ersten TH-Zelle findet sich von allein.
Ich habe übrigens den Aufruf der Funktion init() wieder aus der Tabelle selbst herausgenommen und wieder in den onload-Eventhandler des Window-Obkektes gepackt, denn das bringt bei mehreren Tabellen ja sonst nichts.
Gruß Gernot