مشكلة إضافة onclick معالج الارتباط التشعبي الوسم داخل عنصر القائمة
-
21-08-2019 - |
سؤال
في محاولة لإضافة onclick معالج إلى علامات التبويب ، و لا يمكن أن يبدو للحصول على دوم اختيار الحق.هل يمكنكم المساعدة ؟
<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);
إذا كان يعمل ثم السؤال هو مغفل من مسج الإغلاق الحلقات و الأحداث
نصائح أخرى
وأنا أوافق على RoBorg وتشير القراءة عن نطاقات جافا سكريبت. وسوف أشرح كثيرا.
والسطر الأول من 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