Funktion in Funktion mit setTimeout

Hi,

wird ein Event wie von dir gepostet registriert, wird die Funktion dem Attribut (onchange) zugewiesen. Beim Feuern eines Events wird sie auch im Kontext des auslösenden Elements ausgeführt - this zeigt also auf den Auslöser.

Anders sieht es schon wieder aus, wenn du die Funktion über eine anonyme Funktion zuweist. In einem solchen Fall zeigt this auf das Objekt, dem die Funktion zugeordnet ist (im Beispiel window).

Beispiel:
Code:
<html>
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese">
<script type="text/javascript">
  <!--
var name = "WindowTest";
z = 0;
function versuch() {
  alert(this.name);
}

window.onload = function(){
  while(document.getElementsByName("Lupe")[z]) {
    if(z==0)
      document.getElementsByName("Lupe")[z].onclick = function(){ versuch();};
    else
      document.getElementsByName("Lupe")[z].onclick = versuch;

    z++;
  }
}
 //-->
</script>
</head>
<body>
<img name="Lupe" src="bild1.gif">
<img name="Lupe" src="bild2.gif">
</body>
</html>
Wird das erste Bild angeklickt, wird das name-Attribut von window ausgegeben, beim zweiten Bild das des zugehörigen Bildes.

Ich habe den Funktionsnamen test geändert, da es eine gleichlautende Routine in JS gibt.

Ciao
Quaese
 
Zurück