求高手帮忙,希望查看是第几个li元素被点击,给 obj_lis[i].onclick = function()传递变量,但是每次都是显示8,希望能变成0到7

wonota 2017-02-09 01:18:53
<div>

<ul id="ca">
<li exist="0" class="cc">111</li>
<li class="cc">222</li>
<li class="cc">333</li>
<li class="cc">444</li>
<li class="cc">555</li>
<li class="cc">666</li>
<li class="cc">777</li>
<li class="cc">888</li>
</ul>

</div>


function create()
{
var obj_lis = document.getElementById("ca").getElementsByTagName("li");
for(var i=0;i<obj_lis.length;i++)
{
//obj_lis[i].onclick = createNodeList;
obj_lis[i].onclick = function()
{
createNodeList(i);
};
}
}

create();

function createNodeList(a){
alert(a);
}


点击哪个元素都是提示8

希望给createNodeList(i);传递变量,查看是第几个li元素
...全文
685 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jio可 2017-02-09
  • 打赏
  • 举报
回复
在你触发点击事件的时候循环早就执行完了,最后还执行了i++,所以就一直是最后就一直是8了
forwardNow 2017-02-09
  • 打赏
  • 举报
回复
你这个还是作用域的问题,看看这个吧 js的变量的问题
一支糖包仔 2017-02-09
  • 打赏
  • 举报
回复
var obj_lis = document.getElementById("ca").getElementsByTagName("li"); for(var i=0;i<obj_lis.length;i++) { //obj_lis[i].onclick = createNodeList; obj_lis[i].onclick = function() { createNodeList(i); }; } 这一段不要写在循环里面。
redlz2500 2017-02-09
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/392084316
天际的海浪 2017-02-09
  • 打赏
  • 举报
回复

function create()
{
    var obj_lis = document.getElementById("ca").getElementsByTagName("li");
    for(var i=0;i<obj_lis.length;i++)
	(function(i) {
        obj_lis[i].onclick = function()
		{
			createNodeList(i);
		};
    })(i);
}

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧