让我写这道题,我可能会写成下面这样的代码
<!DOCTYPE>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<ul id="test">
<li>这是第一条</li><li>这是第二条</li><li>这是第三条</li>
</ul>
<script type="text/javascript">
window.onload = function(){
for (var i = 0; i < lis.length; i++) {
lis[i].onclick = function (){
alert(i);
}
}
}
</script>
</body>
</html>
这样alert出来的是3,3,3
应该用下面这种方法
<!DOCTYPE>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<ul id="test">
<li>这是第一条</li><li>这是第二条</li><li>这是第三条</li>
</ul>
<script type="text/javascript">
window.onload = function(){
var lis = document.getElementsByTagName("li");
for (var i = 0; i < lis.length; i++) {
lis[i].onclick = (function(x) {
return function() {
alert(x);
}
})(i);
}
}
</script>
</body>
</html>
这是使用了闭包。
但是我对闭包这个例子还不是太了解,希望了解的朋友能交流下