JavaScript obtenir de l'élément enfant

Pourquoi cela ne fonctionne pas dans firefox, j'essaie de sélectionner la catégorie, puis faire de la sous-catégorie visible.

<script type="text/javascript">
    function show_sub(cat) {
      var cat = document.getElementById("cat");
      var sub = cat.getElementsByName("sub");
      sub[0].style.display='inline'; 
}

</script>

-

<ul>
    <li id="cat" onclick="show_sub(this)">
        Top 1
        <ul style="display:none" name="sub">
            <li>Sub 1</li>
            <li>Sub 2</li>
            <li>Sub 3</li>
        </ul>
    </li>
    <li>Top 2</li>
    <li>Top 3</li>
    <li>Top 4</li>
</ul>

MODIFIER la Réponse est:

<script type="text/javascript">
   function show_sub(cat) {
      cat.getElementsByTagName("ul")[0].style.display = (cat.getElementsByTagName("ul")[0].style.display == "none") ? "inline" : "none";
   }
</script>
  • Je voudrais envisager d'utiliser une classe sub au lieu de l'attribut de nom de, dans cette situation. Si vous souhaitez utiliser jQuery c'est aussi simple que $('#cat .sub').css('display', 'inline').
  • Vous ignorez la cat paramètre, pourquoi?
  • C'est javascript question je n'ai pas besoin de jquery. @gdoron ce que vous voulez dire que je ignorer cat?
  • Vous remplacez la valeur que vous obtenez dans cat. De toute façon, quand vous dites qu'il ne fonctionne pas sous FF, ça marche avec un autre navigateur?
  • Vous passer une variable dans la fonction, et puis ne pas utiliser cette variable. Ce qui en fait un peu redondant (sauf si vous avez juste simplifié de la démo).
  • il ne fonctionne pas n'importe où donne-moi la version de travail s'il vous plaît.

InformationsquelleAutor redacted | 2012-05-12