无法添加onclick处理程序,以超级链接标签内的ListItem
-
21-08-2019 - |
题
尝试一个onclick处理程序添加到我的标签,似乎并不能得到DOM的选择权。你们能帮忙吗?
<div id="tabstrip">
<ul>
<li id="a" class="selected"><a href="#">A</a></li>
<li id="b"><a href="#">B</a></li>
<li id="b"><a href="#">C</a></li>
</ul>
</div>
function initTabStrip()
{
var lis = document.getElementById('tabstrip').getElementsByTagName('li');
for (var i=0;i<items.length;i++)
{
var as = items[i].getElementsByTagName('a');
for (var j=0;j<as.length;j++)
{
as[j].onclick=function(){changeTab(items[i].id);return false}
}
}
}
解决方案
好像你封是错误的。 尝试
as[j].onclick = function(items, i)
{
return function()
{
changeTab(items[i].id);
return false;
};
}(items, i);
如果它工作,则问题是 jQuery的瓶盖,循环和活动的欺骗
其他提示
我同意RoBorg和建议阅读关于JavaScript的作用域。这将解释了很多。
您JS的第一行,创建var lis
但你反覆items
。真的是你想要的吗?
完整功能,具有变化由罗贝格提示:
function initTabStrip()
{
var tabstrip = document.getElementById('tabstrip');
var items = tabstrip.getElementsByTagName('li');
for (var i=0;i<items.length;i++)
{
var as = items[i].getElementsByTagName('a');
for (var j=0;j<as.length;j++)
{
as[j].onclick = function(items, i)
{
return function()
{
changeTab(items[i].id);
return false;
};
}(items, i);
}
}
}
不隶属于 StackOverflow