Question

Je suis un problème avec getElementByID comme suit:

<script type="text/javascript">
<!--
function show_links(locale) {

        var box = document.getElementById(locale);

        if(box.style.display == "none") { 
            box.style.display = "inline";
        } 
         else { 

            box.style.display = "none";
        }

    }
    //-->
</script>

<div class="link"><strong><a href="javascript:show_links(test);">Test</a></strong></div>
<div class="test"> Blah blah blah. This content comes and goes. </div>

Alors là, vous avez le code. Lorsque je clique sur le lien « Test », il doit cacher le « bla bla bla texte ». Lorsque vous cliquez dessus à nouveau, il doit montrer. Cependant, j'ai un problème bizarre. J'ai traité le code par un débogueur, et il semble que la var box = document.getElementById(locale); ligne ne fonctionne pas correctement. box est définie sur null. Quelqu'un peut-il théoriser pourquoi?

Était-ce utile?

La solution

Vous avez plusieurs problèmes. D'abord les critiques les:

  1. La valeur que vous passez à la fonction show_links est la test variable. Elle est égale à undefined donc il ne va pas correspondre à quelque chose.
  2. L'élément que vous essayez de trouver par son id ne dispose pas d'un identifiant. Il ne dispose que d'une classe.

Vous devez donner l'élément que vous essayez de faire correspondre un identifiant et passer un au lieu d'une valeur indéfinie string .

Ensuite, les questions moins.

  1. Vous testez la propriété style d'affichage en ligne, mais vous ne définissez pas par défaut. En règle générale, il est préférable de tourner la propriété className, et que vos styles définis dans une feuille de style.
  2. Vous utilisez un javascript pseudo-URI au lieu de amélioration progressive .
  3. Vous avez commentaires enveloppés autour de l'intérieur de la script. A meilleur , ceux-ci sont inutiles.
  4. Vous êtes un div entre tournait inline et none, mais la valeur d'affichage par défaut pour un div est block. Il y a des raisons d'avoir une ligne de style div, mais la plupart du temps, vous devriez utiliser un autre élément.

Autres conseils

javascript:show_links(test);

test est un identifer inconnu. Où avez-vous le définir? Vouliez-vous dire pour alimenter une chaîne?

<div class="test"> Blah blah blah. This content comes and goes. </div>

Il n'y a aucun élément avec un id de test dans cette ligne. Utilisez le id d'attribut approprié.

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