wo liegt der Unterschied zw den beiden Abfragen?

emuume

Mitglied
hi, habe folgendes Problem: will per Funktion den Wert eines onClick event austauschen.

ich wollte dafür folgenden ausdruck verwenden:
document.getElementById("senden").setAttribute("onClick","test");

funktioniert aber nicht. komischerweise konnte ich im selben tag mit dem selben Ausdruck ein value-Attribut ändern..

was noch viel komischer ist: wenn ich nach Ausführung des oben genannten Ausdruckes mit den folgenden beiden Ausdrücken den Wert überprüfen will, erhalte ich ne ganz kuriose Ausgabe:

beim Ausdruck
alert(document.getElementById("senden").getAttribute("onClick"));
erscheint der alte, ursprüngliche Wert

aber beim Ausdruck
alert(document.getElementById("senden").onClick);
erscheint der neue, geänderte Wert!

leider funktioniert das Script nicht, da das alte onClick stehen bleibt. Nun die Frage: was ist das für ein neues onClick, was ich da erzeugt habe? und warum kann ich das ursprüngliche onClick nicht ersetzen
 
Alle Events sind eigentlich weniger Bestandteil von HTML und wirkliche HTML-Attribute, als mehr Bestandteil von Javascript. Daher kannst du einem onclick nicht einfach per Javascript einen Text zuweisen. Du musst ihm eine Funktion zuweisen:
Code:
document.getElementById("senden").onclick = new Function('alert("hallo")');
wird unter Garantie funktionieren.

Ganz nebenbei besteht das Problem mal wieder nur im IE. Außerdem heißt nach XHTML-Standart der onClick-Event jetzt onclick (also alles klein geschrieben) - das sollstest du immer in Verbindung mit DOM-Methoden so schreiben.

In deinem Fall ignoriert getAttribute einfach, schlau wie die DOM-Methoden sind die ungültige Zuweisung per setAttribute, während die alte onclick-Eigenschaft torztdem den neuen, verkehrten Wert hat.
 
Zuletzt bearbeitet:
Naja.... lt. HTML sind die Events als Attribute schon regulär... auch das zuweisen einer Zeichenkette ist da legitim. Ich würd die Sache am Besten in die Schublade "Browsermacke" zu den zahlreichen anderen Dingen legen, und es ohne get-/setAttribute() machen.
 
is das geil

s klappt! :)

hab noch bissel mit der Groß- und Kleinschreibung experimentiert (bei der Zuweisung muß das onclick komplett klein geschrieben werden)
danke euch!
 
Zurück