JavaScript中的for循环会在页面加载完成之后立即执行,而响应函数会在超链接被点击时才执行
当响应函数执行时,for循环早已执行完毕
因此,响应函数里面输出的i全部都等于allA[i].length,而不是超链接对应的i
例子如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
window.onload = function () {
var allA=document.getElementsByTagName("a");
for(var i=0;i<allA.length;i++){
// 响应函数
allA[i].onclick=function(){
alert(i);//i全部等于3
}
}
};
</script>
</head>
<body>
<a href="#">超链接1</a><br>
<a href="#">超链接2</a><br>
<a href="#">超链接3</a>
</body>
</html>
本文版权归作者和优快云共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。