setAttribut
FireGlow
- javascript
Moin!
Ich muss dynmaisch den onClick-Event eines Buttons verändern.
Dankbarerweise gibts ja dafür folgendes:
out.println("document.getElementById(TD + '_Button').setAttribute("onClick", "addPicture('"+TD+"', '"+nummer+"');");");
Jedoch klappt das nicht im IE, wie issen da der Befehl für?
Gruß
FireGlow
Hallo FireGlow.
Ich muss dynmaisch den onClick-Event eines Buttons verändern.
Dankbarerweise gibts ja dafür folgendes:
out.println("document.getElementById(TD + '_Button').setAttribute("onClick", "addPicture('"+TD+"', '"+nummer+"');");");
Was ist „out.println“ und was hat es mit JavaScript zu tun?
Jedoch klappt das nicht im IE, wie issen da der Befehl für?
Du musst die direkte Variante nehmen:
buttonobject.onclick = function() {
addPicture(wie, auchimmer);
};
Funktioniert in allen Browsern gleich, setAttribute ist also überflüssig.
Einen schönen Dienstag noch.
Gruß, Ashura
Was ist „out.println“ und was hat es mit JavaScript zu tun?
Ist noch in Java implementiert, habs mit gepostet, da ich ja auch einfach nen Zeichenfehler drin haben koennte.
Du musst die direkte Variante nehmen:
buttonobject.onclick = function() {
addPicture(wie, auchimmer);
};
>
Funktioniert nämlich eben nicht. Teste es aber gerne nochmal.
Gruß
FireGlow
Hallo,
Funktioniert nämlich eben nicht. Teste es aber gerne nochmal.
dann poste doch mal das (nichtfunktionierende) Beispiel.
Grüsse
Cyx23
dann poste doch mal das (nichtfunktionierende) Beispiel.
Passt nun, danke.
Hallo FireGlow.
Du musst die direkte Variante nehmen:
buttonobject.onclick = function() {
addPicture(wie, auchimmer);
};
> >
>
> Funktioniert nämlich eben nicht. Teste es aber gerne nochmal.
[\[quote:#186](http://community.de.selfhtml.org/my/zitatesammlung/zitat186)]
Einen schönen Dienstag noch.
Gruß, Ashura
--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
„It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
[[HTML Design Constraints: Logical Markup](http://www.w3.org/History/19921103-hypertext/hypertext/WWW/MarkUp/HTMLConstraints.html)]
Hi FireGlow!
Ich kenn zwar die setzen Richtung nicht auswendig, aber vielleicht hilft die das (ist die get Richtung):
if (navigator.appName.search(/Microsoft Internet Explorer/)!=-1)
theClass=myCol.getAttributeNode("class").value;
else
theClass=myCol.getAttribute("class");
Muss sich ja dann ummodeln lassen.
Greets,
Richard
Hallo Richard,
if (navigator.appName.search(/Microsoft Internet Explorer/)!=-1)
Ist eine Browsererkennung durch JavaScript per navigator.appName angesichts der Möglichkeiten
z.B. von Opera nicht etwas unsicher?
Grüsse
Cyx23
Hi,
if (navigator.appName.search(/Microsoft Internet Explorer/)!=-1)
1. Die Browserweiche ist hier absolut überflüssig.
2. Wenn schon Browserweiche, dann eine bessere (*jede* der möglichen ist besser als eine navigator-Abfrage =;-))
3. Beim class-Attribut sollte man (wg. IE-Problemen) einfach direkt className verwenden!
4. Das Beispiel hat nichts mit dem Eventhandling zu tun. Das geht anders.
Gruß, Cybaer
Hallo,
Jedoch klappt das nicht im IE,
du kannst ja mal in der Richtung etwas versuchen:
window.onload=function(){
document.getElementById("test").onclick=function(){alert(0)};
}
Grüsse
Cyx23
Hi
document.getElementById("test").onclick=function(){alert(0)};
Was ist eigentlich der Unterschied zwischen
document.getElementById("test").onclick=function(){alert(0)};
und
document.getElementById("test").onclick="alert(0)";
?
mfg
Genie
Hi,
document.getElementById("test").onclick=function(){alert(0)};
Was ist eigentlich der Unterschied zwischen
document.getElementById("test").onclick=function(){alert(0)};
und
document.getElementById("test").onclick="alert(0)";
?
Mal abgesehen davon, dass "alert(0)" ein String und keine Funktion ist ...
Das "Problem" ist, dass du beim Registrieren eines Event Handlers keine Parameter angeben darfst/sollst/wie auch immer. Daher musst du eine parameterfreie anonyme Funktion schreiben, die dann dein alert aufruft.
Angenommen, du hättest die Funktion "gibFehlerAus()" so definiert:
function gibFehlerAus()
{
alert('Fehler!');
}
~~~dann wäre die korrekte Zuweisung
`document.getElementById("test").onclick=gibFehlerAus;`{:.language-JavaScript}
Der Yeti
--
Habe nun, ach! [WInfo](http://www.informatik.uni-koeln.de/winfo/), BWL, und Mathe, Und leider auch Info!
Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
Und bin so klug als wie zuvor!
[sh:( fo:| ch:? rl:? br:< n4:& ie:( mo:| va:| de:\[ zu:) fl:| ss:) ls:< js:|](http://community.de.selfhtml.org/fanprojekte/selfcode.htm)
Hi
Mal abgesehen davon, dass "alert(0)" ein String und keine Funktion ist ...
Ja, aber
<button onClick="alert('Wasweißich')">
^^^^^^^^^^^^^^^^^^^^^
doch auch.
Das "Problem" ist, dass du beim Registrieren eines Event Handlers keine Parameter angeben darfst/sollst/wie auch immer. Daher musst du eine parameterfreie anonyme Funktion schreiben, die dann dein alert aufruft.
Angenommen, du hättest die Funktion "gibFehlerAus()" so definiert:
function gibFehlerAus()
{
alert('Fehler!');
}
> `document.getElementById("test").onclick=gibFehlerAus;`{:.language-JavaScript}
Ah, danke, jez hab ichs!
mfg
Genie
--
[Selfcode: ie:{ fl:( br:> va:) ls:\[ fo:) rl:( n4:{ ss:) de:\[ js:| ch:| sh:( mo:} zu:) ](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%7B+fl%3A%28+br%3A%3E+va%3A%29+ls%3A%5B+fo%3A%29+rl%3A%28+n4%3A%7B+ss%3A%29+de%3A%5B+js%3A%7C+ch%3A%7C+sh%3A%28+mo%3A%7D+zu%3A%29)
[Der Internet Explorer ist scheiße](http://web.oesterchat.com/internet-explorer/)
[Wie ist meine IP-Adresse?](http://www.wieistmeineip.de/cometo/)
Hi,
Ja, aber
<button onClick="alert('Wasweißich')">
^^^^^^^^^^^^^^^^^^^^^
doch auch.
Nein, das ist ein Attribut des button-Elements und das muss in Anführungszeichen eingeschlossen werden. Aber wenn du den onclick-Handler rein in JavaScript registrierst, musst du die Funktion angeben und zwar nicht als String. (Warum das so ist, sprengt mein Verständnis von den "Innereien" von JavaScript, könnte man sicherlich auch beides implementieren.)
Ah, danke, jez hab ichs!
Super.
Der Yeti
Hallo,
Ja, aber
<button onClick="alert('Wasweißich')">
^^^^^^^^^^^^^^^^^^^^^
[geht] doch auch.Nein, das ist ein Attribut des button-Elements und das muss in Anführungszeichen eingeschlossen werden. Aber wenn du den onclick-Handler rein in JavaScript registrierst, musst du die Funktion angeben und zwar nicht als String. (Warum das so ist, sprengt mein Verständnis von den "Innereien" von JavaScript, könnte man sicherlich auch beides implementieren.)
Vielleicht zur Ergänzung:
Prinzipiell kann man durchaus
element.setAttribute("onclick", "func('param')");
schreiben.
(Das ist, wie Ashura dargelegt hat, etwas ganz anderes als: element.onclick = func("param");
)
Das sollte jeder standardkonforme Browser verstehen: Man setzt ganz einfach über das DOM ein Attribut namens onclick. Als ob es im HTML-Code schon drinstünde.
Die Kurzschreibweise element.onclick = "func('param')";
ist hingegen in DOM 2 HTML nicht vorgesehen, weil man dort von DOM Events zum Registrieren von Event-Handlern ausgeht.)
Das Problem ist, dass eben nicht alle Browser standardkonform sind - wenn ich es recht in der Erinnerung habe, versteht IE als einziger Browser das nicht.
Der IE will die klassische Methode zum Registrieren von Event-Handlern, die Netscape mal erfunden hat, als es das W3C-DOM noch längst nicht gab, nämlich gemäß dem Schema:
element.onevent = func;
Wenn man also Parameter übergeben will, wie man es mit einem onclick-Attribut machen kann, dann nimmt man die ebenfalls angesprochene Methode: »Über die Kapselung in anonymen Funktionen können Parameter übergeben werden.«
Das heißt dann z.B.
element.onclick = function () {
func("param");
};
Mathias
Hallo Yeti.
Das "Problem" ist, dass du beim Registrieren eines Event Handlers keine Parameter angeben darfst/sollst/wie auch immer.
Nein, das stimmt nicht. Über die Kapselung in anonymen Funktionen können Parameter übergeben werden. Das Problem ist ein anderes:
function shout(what) {
alert(what);
}
document.getElementById('test').onclick = shout('Hello');
Was passiert hier? Die Funktion „shout“ wird sofort aufgerufen und ihr Rückgabewert wird der onclick–Eigenschaft des Objektes zugewiesen.
function shout(what) {
alert(what);
return 'World';
}
document.getElementById('test').onclick = shout('Hello');
Hier wird nun augenblicklich die übergebene Zeichenkette ausgegeben. Lässt man sich nun einmal den Inhalt der onclick–Eigenschaft ausgeben, sieht man einen Funktionskörper und obigen Rückgabewert als einzigen Inhalt. Gibt man keinen Rückgabewert an, ist er logischerweise „undefined“.
Einen schönen Dienstag noch.
Gruß, Ashura