onclick in DOM eintragen

SAMariter

Mitglied
Hallo zusammen.

Ich stehe mal wieder auf dem Schlauch. Ich möchte per JS einen EventHandler an ein DOM-Element anhängen. Das habe ich nun so gelöst:

Code:
domeintrag.setAttribute("onclick", "herstellerauswaehlen('" + result[f].categories_id + "', '" + result[f].categories_name + "')");

das würde auch ganz gut funktionieren, ABER natürlich nicht in Müll-IE 6.

Wie kann ich das sonst schreiben, das das auch wirklich jeder Browser versteht?

Danke euch.


CU SAM
gebrauchte Autoteile.
Tuning Teile Online
 
Das geht mit element.addEventListener():
Javascript:
domeintrag.addEventListener("click", "herstellerauswaehlen('" + result[f].categories_id + "', '" + result[f].categories_name + "')");
Mehr erfährst du hier: Click!

Auf dieser Seite steht, dass man das Event beim IE mit dem "on" schreiben muss, also "onclick" anstatt nur "click"


PS: Ich würde den IE 6 nicht mehr unterstützen.
 
Hi.

Danke für die Antwort. Werde mal schauen ob mich das weiterbringt.

Den IE6 werde ich wohl noch unterstützen, weil mir der Mehraufwand an arbeit nicht so weh tut, wie enttäuschte Kunden.

Danke.

CU
 
So, nun muß ich nochmal nachfragen. Da ich wie gesagt den IE6 noch "halbherzig" unterstützen möchte, bräuchte ich jetzt eine Browserweiche (innerhalb von JS), die alle IE Versionen 6 und älter erkennt.

Habe im Internet schon eine ganze weile gesucht aber nichts gefunden.

@ComFreek: Ich habe das gerade mal ausprobiert mit dem add.EventListener. Aber das läuft irgendwie nicht. Oder liegt das daran, das das NUR im IE6 funktioniert? Ich habe es nämlich im IE7 Ausprobiert...
 
Zuletzt bearbeitet:
Also, ich habe jetzt lange mit mir gerungen und ein wenig im Internet rumgelesen. Somit bin auch ich zu dem entschluß gekommen, das der IE6 einfach schon zu alt ist, um noch unterstützt zu werden.

Damit sind die Fragen von vorher hinfällig.

Danke trotzdem!!

CU SAM
 
Hallo ComFreek.

Also den ganzen Code willst du bestimmt nicht, das sind nämlich 670 Zeilen. Aber ich habe jezt mal den Block kopiert in dem der DOM-Eintrag erstellt wird.

Code:
for(f=0; f <= anzahl-1; f++) {
            if(result[f].parent_id == nummer) {
                var domdiv = document.getElementById("herstellerboxinhalt");
                //Marke einfügen
                var domeintrag = document.createElement("p");
                //Atribute anhängen
                var markeid = "marke";
                    markeid = markeid.concat(f);
                domeintrag.setAttribute("id", markeid);
                domeintrag.setAttribute("class", "marke");
                domeintrag.setAttribute("onclick", "herstellerauswaehlen('" + result[f].categories_id + "', '" + result[f].categories_name + "')");
                var domtext = document.createTextNode(result[f].categories_name);

                domeintrag.appendChild(domtext);
                domdiv.appendChild(domeintrag);
            }
        }

Die ID und die Class hatte ich schon abgeändert, habe ich aber mit der Entscheidung den IE6 nicht mehr zu unterstützen wieder auf setAttribute geändert.

CU SAM
 
Vielleicht solltest du die Attribute per document.createAttribute() erzeugen:
Javascript:
for(f=0; f <= anzahl-1; f++) {
            if(result[f].parent_id == nummer) {
                var domdiv = document.getElementById("herstellerboxinhalt");
                //Marke einfügen
                var domeintrag = document.createElement("p");
                //Atribute anhängen
                var markeid = document.createAttribute("id");
                markeid.nodeValue = "marke";
                domeintrag.setAttributeNode(markeid);

                var attrClass = document.createElement("class");
                attrClass.nodeValue = "marke";
                 domeintrag.setAttributeNode(attrClass);
     
                var attrOnClick = document.createElement("onclick");
                attrOnClick.nodeValue = "herstellerauswaehlen('" + result[f].categories_id + "', '" + result[f].categories_name + "')";
                 domeintrag.setAttributeNode(attrOnClick);


                var domtext = document.createTextNode(result[f].categories_name);
 
                domeintrag.appendChild(domtext);
                domdiv.appendChild(domeintrag);
            }
        }
 
Moin,

Folgendes sollte in allen Browsern problemlos funktionieren:
Code:
domeintrag.onclick=function(){herstellerauswaehlen(result[f].categories_id,result[f].categories_name);}
 
Also, vielen Dank für eure Antworten und die damit verbundene Mühe. Aber leider funktioniert kein Vorschlag...

Eigentlich schade, aber echt kein Problem. Wie gesagt, ich habe eh nicht vor den IE6 noch zu unterstützen. Und in allen anderen Browsern funktioniert das hervorragend.

CU SAM
 

Neue Beiträge

Zurück