当前位置:网站首页>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会指向超链接本身
边栏推荐
猜你喜欢
随机推荐
Do you know the basic process and use case design method of interface testing?
如何仅更改 QGroupBox 标题的字体?
LoRa芯片的特征
通过记账,了解当月收支情况
老干妈创始人陶华碧现身直播间,70岁“国民女神”拥抱直播电商
Kotlin Algorithm Getting Started with Rabbit Number Optimization and Expansion
快速幂,逆元的求解
少年成就黑客,需要这些技能
Alibaba Sentinel - Slot chain解析
8、Mip-NeRF
golang string manipulation
OAuth Client默认配置加载
2022年值得关注的NFT发展趋势
JUC并发编程
AcWing 272. 最长公共上升子序列
For the first time, I suspect that there is a bug in selenium4 because the iframe element is not found?
Kotlin算法入门兔子数量优化及拓展
Notable NFT development trends in 2022
数据库无法启动,报无法分配内存,怎么处理
leetcode:69. x 的平方根