87,921
社区成员
发帖
与我相关
我的任务
分享
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<script>
function func() {
var i;
for (i = 1; i <= 4; i++) {
var el = document.getElementById('closureExample' + i);
el.onclick = function() { alert(i) };
}
}
window.onload = function() {
func();
}
</script>
</head>
<body>
<a href="#" id="closureExample1">例子1</a>
<a href="#" id="closureExample2">例子2</a>
<a href="#" id="closureExample3">例子3</a>
<a href="#" id="closureExample4">例子3</a>
</body>
</html>
function func() {
var i;
for (i = 1; i <= 4; i++) {
var el = document.getElementById('closureExample' + i);
el.onclick = function() { alert(i) }; //这个函数的上下文是func函数,这样onclick能访问func函数定义的i变量,他没有绑定那个值,只是能访问上下文的变量,这样最终执行onclick时i已经在这个上下文中有固定值5,所以全部onclick都显示5
}
}
function func() {
for (i = 1; i <= 4; i++) {
var el = document.getElementById('closureExample' + i);
(function(){
var ii = i;
el.onclick = function(){ alert(ii);};
})();
}
}
function func() {
for (var i = 1; i <= 4; i++) {
var el = document.getElementById('closureExample' + i);
el.setAttribute('index', i);
el.onclick = function() {
alert(this.getAttribute('index'));
};
}
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<script>
function func() {
var i;
for (i = 1; i <= 4; i++) {
document.getElementById("closureExample"+i).onclick = (function(n) {
return function() {alert(n);}
})(i)
}
}
window.onload = function() {
func();
}
</script>
</head>
<body>
<a href="#" id="closureExample1">例子1</a>
<a href="#" id="closureExample2">例子2</a>
<a href="#" id="closureExample3">例子3</a>
<a href="#" id="closureExample4">例子3</a>
</body>
</html>