Problemi aggiungendo gestore onclick al tag di collegamento ipertestuale nel listitem
-
21-08-2019 - |
Domanda
Il tentativo di aggiungere un gestore onclick alle mie schede, e non riesco a ottenere la giusta selezione DOM. Can you guys aiuto?
<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}
}
}
}
Soluzione
Sembra che il tuo chiusura è sbagliato. Prova
as[j].onclick = function(items, i)
{
return function()
{
changeTab(items[i].id);
return false;
};
}(items, i);
Se funziona allora la questione è una vittima di jQuery Chiusure, Loop ed Eventi
Altri suggerimenti
Sono d'accordo a RoBorg e suggerisco di leggere sugli ambiti JavaScript. Sarà spiegare molto.
prima riga del JS, si crea var lis
ma poi di eseguire iterazioni su items
. E 'davvero questo che vuoi?
funzione completa, con le modifiche suggerite da Røberg:
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);
}
}
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow