alert不出来内容。

<ul>

<li>click me</li>

<li>click me</li>

<li>click me</li>

<li>click me</li>

<li>click me</li>

</ul>

<script>

varelements=document.getElementsByTagName('li');

varlength=elements.length;

for(vari=0;i<length;i++){

elements[i].οnclick = function(){

alert(i);

    }

}

</script>

请问各位大神,
1. alert(i);为什么打印不出来内容呢?
2.我希望的结果是,每次点击li,都可以得到对应li的index值,麻烦各位大神帮忙改下。

阅读 2.7k
2 个回答

不服不行。肉眼真看不出来区别,楼主你是怎么做到的?
image.png

第2个问题是很普遍的闭包问题,把var换成let即可。

for (let i = 0; i < length; i++) {  
    elements[i].onclick = function () {  
        alert(i);  
    }  
}

或者

 for (var i = 0; i < length; i++) {
        elements[i].onclick   = (function (i) {
            return function () {
                alert(i);
            };
        })(i);
    }

把script放在body后面,然后同上个回答闭包问题,建议用let

推荐问题