Pregunta

Tratando de agregar un controlador onclick a mis pestañas, y parece que no puede obtener el derecho de la selección DOM. Pueden ustedes ayudar?

  <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}
    }
  }
}
¿Fue útil?

Solución

Parece que su cierre es incorrecta. Trate

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

Si funciona entonces la pregunta es una víctima de jQuery cierres, Loops y Eventos

Otros consejos

Estoy de acuerdo con RoBorg y sugiero leer acerca de los ámbitos de JavaScript. Se explicará mucho.

Primera parte de la JS, se crea var lis pero luego iterar sobre items. ¿Es eso realmente lo que quieres?

Función completa, con los cambios sugeridos por 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);
    }
  }

}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top