2008-12-15 11 views
1

Vous essayez d'ajouter un gestionnaire onclick à mes onglets et vous n'arrivez pas à obtenir la sélection DOM correcte. Pouvez-vous aider les gars?Problème lors de l'ajout d'un gestionnaire onclick à un lien de lien hypertexte à l'intérieur de la liste

<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} 
    } 
    } 
} 

Répondre

2

On dirait que votre fermeture est incorrecte. Essayez

as[j].onclick = function(items, i) 
{ 
    return function() 
    { 
     changeTab(items[i].id); 
     return false; 
    }; 
}(items, i); 

Si cela fonctionne alors la question est dupe de jQuery Closures, Loops and Events

0

J'accepte de RoBorg et vous suggère de lire sur les étendues JavaScript. Cela va beaucoup expliquer.

0

Première ligne de votre JS, vous créez var lis, puis vous effectuez une itération sur items. Est-ce vraiment ce que tu veux?

0

fonction complète, avec des modifications proposées par 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); 
    } 
    } 

}