2个回答
展开全部
既然已经知道函数调用外部变量的时候就构成了一个闭包,里面的变量会受到别的地方的影响,那么我们
现在要做的就是,构建一个只有自己本身才可访问的闭包,保存只供本身使用的变量
构建一个闭包很简单,代码如下:
方式一:
var list_obj = document.getElementsByTagName('li');
for (var i = 0; i <= list_obj.length; i++) {
<span style="white-space:pre"> </span>list_obj[i].onclick = (function(i){ // outer function
<span style="white-space:pre"> </span>return function(){ //inner function
<span style="white-space:pre"> </span>alert(i);
<span style="white-space:pre"> </span>};
<span style="white-space:pre"> </span>})(i);
}*
方式二:
var list_obj = document.getElementsByTagName('li');
for (var i = 0; i <= list_obj.length; i++) {
(function(i){
//var p = i
list_obj[i].onclick = function() {
alert(i);
}
})(i);
}
现在要做的就是,构建一个只有自己本身才可访问的闭包,保存只供本身使用的变量
构建一个闭包很简单,代码如下:
方式一:
var list_obj = document.getElementsByTagName('li');
for (var i = 0; i <= list_obj.length; i++) {
<span style="white-space:pre"> </span>list_obj[i].onclick = (function(i){ // outer function
<span style="white-space:pre"> </span>return function(){ //inner function
<span style="white-space:pre"> </span>alert(i);
<span style="white-space:pre"> </span>};
<span style="white-space:pre"> </span>})(i);
}*
方式二:
var list_obj = document.getElementsByTagName('li');
for (var i = 0; i <= list_obj.length; i++) {
(function(i){
//var p = i
list_obj[i].onclick = function() {
alert(i);
}
})(i);
}
追问
能解释一下为什么原来的代码中为什么会出现那样的问题吗
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询