Frage

ich habe ein Problem mit getElementbyId, wie folgt:

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

So haben Sie den Code. Wenn ich den Link „Test“ klicken, sollte es den „bla bla bla Text“ verbergen. Wenn wieder geklickt haben, sollte es zeigen. Allerdings habe ich ein seltsames Problem. Ich verarbeitet den Code durch einen Debugger, und es scheint, dass die Linie var box = document.getElementById(locale); nicht richtig funktioniert. box wird auf null gesetzt. Kann jemand theoretisieren, warum?

War es hilfreich?

Lösung

Sie haben mehrere Probleme. Zunächst werden die kritischsten:

  1. Der Wert, den Sie in die show_links Funktion sind vorbei ist die Variable test. Dies entspricht undefined so ist es nichts gehen lassen.
  2. Das Element, das Sie durch seinen id zu finden versuchen, nicht über eine ID. Es hat nur eine Klasse.

Sie müssen das Element geben Sie versuchen, eine ID zu entsprechen und eine string anstelle eines nicht definierten Wert übergeben.

Dann werden die weniger Probleme.

  1. Sie testen die Inline-Anzeigestil Eigenschaft, aber sie setzen sie nicht standardmäßig aktiviert. Als Faustregel ist es besser, die className Eigenschaft twiddle und haben Ihre Stile in einem Stylesheet definiert.
  2. Sie verwenden einen Javascript pseudo-URI statt progressive Erweiterung .
  3. Sie haben Kommentare um die Innenseite des Skripts gewickelt. Bei am besten , das ist sinnlos.
  4. Sie twiddling ein div zwischen inline und none, aber der Standard-Anzeigewert für ein div ist block. Es gibt Gründe, ein div Stil Inline zu haben, aber die meiste Zeit sollten Sie ein anderes Element verwendet wird.

Andere Tipps

javascript:show_links(test);

test ist ein unbekannter identifer. Wo haben definieren Sie es? Meinen Sie eine Zeichenfolge zu füttern?

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

Es gibt kein Element mit der ID test in dieser Linie. Verwenden Sie das richtige Attribut id.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top