Question

Essayer d'ajouter un gestionnaire onclick à mes onglets, et ne peut pas sembler obtenir le droit de sélection DOM. Pouvez-vous les gars aider?

  <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}
    }
  }
}
Était-ce utile?

La solution

On dirait que votre fermeture est faux. 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, boucles et événements

Autres conseils

Je suis d'accord pour RoBorg et vous suggère de lire sur les étendues JavaScript. Il expliquera beaucoup.

La première ligne de votre JS, vous créez mais vous var lis itérer sur items. Est-ce vraiment ce que vous voulez?

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

}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top