Ceci est vraiment une question de base, mais ...Comment utiliser la valeur d'une variable au moment de la déclaration dans une fonction anonyme JavaScript?
J'ai un code comme celui-ci
var arr = Array('blah.jpg','ha.jpg');
for (var i=0; i<array.length; i++)
{
$('div#blah' + i).click(function() {
$('img').attr('src', arr[i]); });
}
Cela devrait lier la div avec id="blah0"
changer toutes les images à 'blah.jpg'
lorsque vous cliquez dessus. De même, en cliquant sur le div avec id ="blah1"
devrait changer toutes les images à 'ha.jpg'
. Cependant, la fonction anonyme ne fonctionnera pas car elle utilisera la valeur de 'i' au moment de l'exécution, c'est-à-dire 2. Cela signifie que cliquer sur div va essayer de régler toutes les images sur arr [2] - un élément inexistant (intéressant de ne pas lancer une erreur JS sur ma machine mais c'est une autre histoire ...).
Comment puis-je obtenir la fonction anonyme à l'aide de la valeur de 'i' au moment de la déclaration?
Comme un exemple plus simple:
for (var i=0; i<10; i++)
{
$('div#blah'+i).click(function() {
alert(i)); });
}
Cela devrait afficher '0' quand je clique 'blah0', '1' quand je clique 'blah1' etc.
Cependant, par défaut, il afficher '10', peu importe lequel 'blah' je clique.
Je vais essayer maintenant - mais cela n'accèdera-t-il pas toujours à la valeur de chaque fois que je clique sur (i.e.définir local_i pour évaluer que 'i' est au moment du clic?) –
Oui, c'est ce que je reçois. –
Oups, je suppose que je n'ai pas assez prêté attention au contexte. –