js追加按钮和按钮的事件放在一个for循环里,为什么按钮的单击不能执行

只要能告诉我为什么不能执行就行了;最好通俗易懂... 只要能告诉我为什么不能执行就行了;最好通俗易懂 展开
 我来答
鈾氶瓏鈾
2016-11-21 · 知道合伙人软件行家
鈾氶瓏鈾
知道合伙人软件行家
采纳数:718 获赞数:1337

向TA提问 私信TA
展开全部
既然已经知道函数调用外部变量的时候就构成了一个闭包,里面的变量会受到别的地方的影响,那么我们
现在要做的就是,构建一个只有自己本身才可访问的闭包,保存只供本身使用的变量
构建一个闭包很简单,代码如下:
方式一:

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);
}
追问
能解释一下为什么原来的代码中为什么会出现那样的问题吗
WEI276507393
2018-01-25
知道答主
回答量:23
采纳率:0%
帮助的人:7.2万
展开全部
顺序写错了,当你获取tag的时候,还没有HTML呢。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式