Probleme beim Hinzufügen OnClick Handler Hyperlink Tag innerhalb listitem
-
21-08-2019 - |
Frage
Der Versuch, einen Onclick-Handler meiner Registerkarten hinzufügen und kann nicht scheinen, die DOM-Auswahl richtig zu machen. Können sie helfen?
<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}
}
}
}
Lösung
Scheint, wie Ihr Verschluss falsch ist. Versuchen
as[j].onclick = function(items, i)
{
return function()
{
changeTab(items[i].id);
return false;
};
}(items, i);
Wenn es funktioniert, dann ist die Frage eine Betrogene von jQuery Closures, Loops und Veranstaltungen
Andere Tipps
Ich bin damit einverstanden, RoBorg und schlage vor, das Lesen über JavaScript Bereiche. Es wird eine Menge erklären.
Die erste Zeile Ihres JS erstellen Sie var lis
aber dann iterieren Sie auf items
. Ist das wirklich das, was Sie wollen?
komplette Funktion, mit Änderungen vorgeschlagen von 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);
}
}
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow