Hey Leute,
ich weis nicht in welche Kategorie das Thema soll, HTML, CSS oder JavaScript. Ich habe es jetzt mal hier gepostet.
Es geht um folgendes: Ich bin gerade dran ein kleines Framework zu schreiben und will dabei auf verschiedene Divs im Hintergrund ein onClick setzten. So muss der User dann nicht immer „
“ schreiben sondern müsste nur " schreiben.
Wie kann ich das realisieren?
Soll es ein JavaScript-Framework sein? Dann wäre JavaScript der richtige Bereich gewesen.
Und zu deiner Frage: Du kannst auch beim onload der Seite in jedem Element Attribute ergänzen. Das geht natürlich nur per JavaScript. In deinem Fall müsstest Du bei bestimmten IDs einfach das onclick-Attribut ergänzen.
window.onload = document.getElementById("xy").onclick = function { alert('test'); }
(nur vom Sinn her, kein funktionierendes Beispiel)
Aber wichtig ist, dass getElementsByClassName nicht in allen browsern funktioniert (z.B. nicht im IE).
Deswegen solltest du alle Elemente durchgehen, ob diese den Klassennamen haben.
Du kannst alle Elemente selektieren in dem du folgendes machst:
var allElements = document.getElementsByTagName("*");
Den Klassennamen kannst du übrigens so abfragen
var element = irgend ein Element;
alert(element.className);
Tipp für Deine nächste Wahl des richtigen Unterforums: Da Du im Thema angibst, dass es um „onClick“ geht, und das ein JavaScript-Event-Handler ist, wäre das JavaScript-Forum naheliegend gewesen. In HTML ist es jedenfalls völlig falsch aufgehoben, weil HTML ja nur eine Strukturbeschreibungssprache ist und nur die Semantik des Inhalts beschreibt.
und kann ich auch eine bestimmte Funktion auf ein Div-Element setzten?
[HTML]document.GetElementByID(‚xy‘).onclick = function test();[/HTML]
Wenn ich es so schreibe geht es net.
So weit läuft alles, auch mit dem document.getElementsByClassName(‚xy‘)
Nun stehe ich aber vor dem nächsten Probleme. Was ist wenn es ein Div mit dieser Klasse nicht gibt.
Ich habe es mit if versucht:
[HTML]
function setonclick(){
if(document.getElementsByClassName(‚whiteitem‘)){
var whiteitem = document.getElementsByClassName(‚whiteitem‘);
var whiteitemparent = whiteitem[0].parentNode.id;
for(i=0;i<whiteitem.length;i++) {
whiteitem[i].onclick = function(){
goto(this);
};
whiteitem[i].id = whiteitemparent;
} }
}
[/HTML]
Nun weis ich aber nicht ob es einfach mit [HTML]if(document.getElementsByClassName(‚whiteitem‘)){[/HTML]geht, dann das liefert eigentlich ein Array zurück. Wie kann ich jetzt prüfen ob es überhaupt ein Div mit dieser Klasse gibt?
Ein Array hat eine Länge
Worüber ich mir eher sorgen machen würde. getElementsByClassName kennt der IE nicht. Da musst du ein workarround machen.
Such mal im Javascript Unterforum nach Lightbox Layer. Da habe ich eine getElementsByTagName Funktion geschrieben