2009-05-18 36 views
0
for (var i=0; i<thumbs.length; i++) 
     { 
      var num = i; 
      Core.addEventListener(thumbs[i], "click", Slide.thumbClick); 
     } 

in dem obigen Code, i den Wert von var num zum thumbClick Eventlistener übergeben will. aber ich kann es nicht. Wenn ich versuche, diesen Wert anzuzeigen, gibt es einen nicht definierten Wert. pls helpvorbei Wert eventlistener funktioniert

+0

Ich verstehe nicht ... Was ist der Code, der isn arbeite nicht? Mit dem obigen Code übergibst du 'num' nicht an irgendetwas. –

+0

Die Slide.thumbClick kann keine Argumente übergeben. Fragen Sie mich nicht, warum die Core-Bibliothek solche Syntax nicht unterstützt. Ich bin hier. ich muss irgendwie auf diesen num-Wert in anderen Funktionen zugreifen. Der Num-Wert ist in diesem Teil definiert, aber wenn ich ihn in einer anderen Funktion anrufe, zeigt er "undefined" -Wert an. – amit

+0

Warnung JS0040: Variable Nummer ist zugewiesen, aber nie in Zeile 3 verwendet :) – xtofl

Antwort

1

nicht sicher erinnern Sie, aber Sie sollten so etwas wie dies tun können:

Core.addEventListener(thumbs[i], "click", function() { 
    //...do stuff here 
}); 

var num noch auf diese anonyme Funktion zur Verfügung stehen soll.

+0

Sehr guter Hinweis. Wenn Sie darauf klicken, wird das "This" zum Daumen [i]. Slide.thumbclick geht vermutlich von einem anderen aus. – xtofl

0

Eine Möglichkeit wäre, eine dynamische Funktion zu erstellen.

So etwas wie das. (Ich bin stützen diese auf meine Erfahrungen mit anderen ECMAScript-basierten Sprachen, möchten Sie vielleicht nochmals überprüfen, um sicherzustellen, das funktioniert.)

for (var i=0; i<thumbs.length; i++) 
{ 
     var num = i; 
     Core.addEventListener(thumbs[i], "click", new function(evt){ 
      Slide.thumbClick(num); 
     }); 
}