0

次のように getElementbyId に問題があります。

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

それで、あなたはコードを持っています。「テスト」リンクをクリックすると、「何とか何とかテキスト」が非表示になります。もう一度クリックすると表示されるはずです。しかし、奇妙な問題があります。デバッガーでコードを処理したところ、行var box = document.getElementById(locale);が正しく機能していないようです。boxnull に設定されています。誰でも理由を理論化できますか?

4

2 に答える 2

3

いくつかの問題があります。最初に重要なもの:

  1. 関数に渡す値show_linksは variable ですtest。これは等しいundefinedので、何にも一致しません。
  2. IDで検索しようとしている要素にはIDがありません。クラスしかありません。

ID と一致させようとしている要素を指定し、未定義の値の代わりに文字列を渡す必要があります。

次に、より小さな問題。

  1. インライン表示スタイル プロパティをテストしていますが、デフォルトで設定していません。経験則として、classNameプロパティをいじって、スタイルシートでスタイルを定義する方がよいでしょう。
  2. プログレッシブ エンハンスメントの代わりに JavaScript 疑似 URI を使用しています。
  3. script の内側にコメントがラップされています。せいぜい、これらは無意味です
  4. inlineとの間で div をいじっていますが、divnoneのデフォルトの表示値は ですblock。div をインライン スタイルにする理由はいくつかありますが、ほとんどの場合、別の要素を使用する必要があります。
于 2009-11-01T02:09:04.547 に答える
0
javascript:show_links(test);

test不明な識別子です。どこで定義しましたか?文字列を養うつもりだったのですか?

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

この行には の ID を持つ要素はありませんtest。適切な属性を使用してくださいid

于 2009-11-01T02:08:20.260 に答える