当前位置:网站首页>for循环和单击相应函数的执行顺序问题

for循环和单击相应函数的执行顺序问题

2022-08-11 08:30:00 LEVI_104

问题代码如下:

//研究点击for循环和单击相应函数的执行顺序问题
window.onload = function(){
    //获取所有的超链接
    var allA = document.getElementsByTagName("a");
    //为每一个超链接绑定一个单击响应函数
    for(var i = 0; i < allA.length; i++){
        allA[i].onclick = function(){
            //正确代码应该是使用this,而不是allA[i],而使用allA[i]就会发生错误
            //this:this指的是当前的第i个超链接本身
            alert(allA[i]);
            return false;
        }
    }
}

问题复现:当网页加载完毕,点击按钮之后,无法执行相应操作(function()函数)

分析:网页在加载的时候,执行for循环,同时赋予每一个超链接按钮一个单击响应函数。然后网页加载完毕,for循环也执行完毕了。此时,for循环的i为allA.length。当我们点击超链接按钮的时候,触发的绑定函数中的allA[i]始终是allA[allA.length],执行失败。

修改:alert(allA[i])---------------->alert(this)。分析这么做的原因:不需要allA[i]找到超链接,this会指向超链接本身

原网站

版权声明
本文为[LEVI_104]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_62775913/article/details/126236370