1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| //这题如果从闭包的角度考虑,可能会给出以下答案: var lis = document.querySelectorAll("li"); lis.forEach(function(li, i){ li.onclick = (function(index){ return function(){ console.log(index); } }){i} }) //当然,上面的答案是正确的,但是假如有数量惊人的li也是用这种方式的话,这个循环的消耗是不是有点多了? //所以从性能角度考虑,可以采用以下方式 var lis = document.querySelectorAll("li"); var ul = document.getElementById("list"); ul.addEventListener("click", function(e){ var activeTarget = e.target; var index = Array.prototype.indexOf.call(lis, activeTarget); console.log(index); }, true);
|