Ashura: setAttribut

Beitrag lesen

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

--
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]