for utilise la fonction immédiate pour obtenir la valeur de la variable i - fermeture

Étant donné que i a une portée globale, la valeur de i est 6 lorsque la boucle se termine, donc la sortie i est 6.

var liList = ul.getElementsByTagName('li');
for (var i = 0; i < 6; i++) {
    liList[i].onclick = function () {
        alert(i) // alert 出来的总是 6,而不是 0、1、2、3、4、5
    }
};

L'utilisation d'une fonction immédiate peut résoudre ce problème.

var liList = ul.getElementsByTagName('li');
for (var i = 0; i < 6; i++) {
    (function(j){
        liList[j].onclick = function () {
            alert(j) // alert出来的 0、1、2、3、4、5
        }
    })(i)
};

Je suppose que tu aimes

Origine blog.csdn.net/pinhmin/article/details/128953280
conseillé
Classement