トラブルのListItem内のハイパーリンクタグにonclickのハンドラを追加します
-
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
に繰り返します。本当に何をしたいということですか?
完全な機能、変更がRoBergによって提案されてます:
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