2011-01-20 8 views
0

JavaScriptを使用している曜日によっては、特定のdivを表示しようとしています。私は "thu"のidを持つdivを持っています。 JavaScriptコードでは、そのIDをドキュメントから取得しようとしますが、何も起こりません。ここに私が持っているものは次のとおりです:JavaScriptのdocument.getElementByIdの問題

ここではdivですが、別のスタイルシートでは "none"と表示されます。

<div id="thu">Thursday</div> 

ここには、同じページの頭の部分のJavaScriptがあります。

var date = new Date(); 
var dayNum = date.getDay(); 
switch (dayNum) 
{ 
case 4: 
document.getElementById('thu').style.display='block'; 
break; 

divは表示されません。このような変数に要素を代入しようとしました...

var block = document.getElementById("thu"); 
document.write(block); 

... "NULL"と書いてあります。

何か不足していますか?どんな助けも素晴らしいだろう。

+1

は、JSが実行するまでにdivが作成されていないようです。関数呼び出しの先頭にコードを入れてから、HTMLの本文の最後にコードを呼び出してください。 –

+0

@ josh.trowありがとう、それは完璧に動作します! – wahle509

答えて

3

HTMLがページに書き込まれる前にコードが実行されていますか?つまり、<div id="thu">より前のブロックは<script>ですか?それは最も可能性の高い問題のようです。

+0

はい、私はあなたが今何を意味するかを見ていると思います。もし私がそれを修正することができます私に見てみましょう。 – wahle509

+0

うん、私はそれを関数にして、文書の最後にそれを呼びました。今、うまく動作します、ありがとう! – wahle509

2

DOMが完全に読み込まれる前に、おそらく要素にアクセスしようとしています。本体のOnloadイベントにコールを入れるか、より良い方法として、JQueryを見てみましょう。これがすべて処理される方法は非常にエレガントです。

1

要素が見つからない場合、2番目のブロックはnullと表示されます。見つかった場合は、[object HTMLDivElement]

のような行が表示されるまで待つ必要があります。対話するには、DOMの準備が整うか、ウィンドウが完全に読み込まれるまで待つ必要があります。それを行うには、この形式であなたのコードをラップする必要があります:

window.onload = function() { 
    // put your code in here 
}; 
0

私はbreak後に閉じ括弧}を追加すると、それは私のために動作します。

+0

ええ、それは私のコードです。私は説明にすべてをコピーしていない。 – wahle509

+0

いいえ、それは@ wahleのコードではなく、 'div'は' script'要素の下にありました。 –