Cet article vous présente principalement une question d'entretien sur la liaison de fermeture et ceci. L'article donne un exemple de code détaillé. Les amis dans le besoin peuvent s'y référer.
Le problème à résoudre est d'ajouter un événement click à chaque li pour l'ul suivant, et de faire apparaître l'index correspondant
<ul id="text"> <li>这是第一个li</li> <li>这是第二个li</li> <li>这是第三个li</li> </ul>
Réponse 1 : lier, pointer la fonction anonyme actuelle vers ceci et passer i comme paramètre
var init = function(){ var obj = document.getElementById('text'); for(var i=0;i<obj.children.length;i++){ obj.children[i].addEventListener('click',function(i){ alert(i) }.bind(this,i)) } } init();
Réponse 2 :Fermeture
var init = function(){ var lis=document.querySelectorAll("#text li"); for(var i=0;i<lis.length;i++){ lis[i].onclick=(function(i){ return function(){ alert(i); }; })(i) } } init();
Réponse 3 : La méthode la plus stupide, la correspondance
var init = function(){ var obj = document.getElementById('text'); for(var i=0;i<obj.children.length;i++){ obj.children[i].addEventListener('click',function(item){ var self = item.target; for(var j=0;j<obj.children.length;j++){ if(self == obj.children[j]){ alert(j); } } }) } } init();
Pour plus d'articles liés au partage d'une question d'entretien sur les fermetures, la liaison et tout cela, veuillez faire attention au site Web PHP chinois !