[解決済み] JavaScript TypeError: null のプロパティ 'style' を読み取ることができません
質問
JavaScriptのコードがあるのですが、以下の行に問題があります。
if ((hr==20)) document.write("Good Night"); document.getElementById('Night).style.display=''
ERROR
Uncaught TypeError: Cannot read property 'style' of null at Column 69
私のdivタグの詳細です。
<div id="Night" style="display: none;">
<img src="Img/night.png" style="position: fixed; top: 0px; left: 5%; height: auto; width: 100%; z-index: -2147483640;">
<img src="Img/moon.gif" style="position: fixed; top: 0px; left: 5%; height: 100%; width: auto; z-index: -2147483639;"></div>
JavaScriptを完成させる。
<script language="JavaScript">
<!--
document.write("<dl><dd>")
day = new Date()
hr = day.getHours()
if ((hr==1)||(hr==2)||(hr==3)||(hr==4) || (hr==5)) document.write("Should not you be sleeping?")
if ((hr==6) || (hr==7) || (hr==8) || (hr==9) || (hr==10) || (hr==11)) document.write("Good Morning!")
if ((hr==12)) document.write("Let's have lunch?")
if ((hr==13) || (hr==14) || (hr==15) || (hr==16) || (hr==17)) document.write("Good afternoon!")
if ((hr==18) || (hr==19)) document.write("Good late afternoon!")
if ((hr==20)) document.write("Good Night"); document.getElementById('Night').style.display=''
if ((hr==21)) document.write("Good Night"); document.getElementById('Night').style.display='none'
if ((hr==22)) document.write("Good Night")
if (hr==23) document.write("Oh My! It's almost midnight!")
if (hr==0) document.write("Midnight!<br>It is already tomorrow!") document.write("</dl>")
//--->
</script>
誰か助けてください。
どのように解決するのですか?
スクリプトの中の、この部分。
document.getElementById('Noite')
を返さなければなりません。
null
を設定しようとしており、さらに
display
プロパティに無効な値を設定する必要があります。 この最初の部分には、いくつかの理由が考えられます。
null
.
-
ドキュメントが読み込まれる前にスクリプトを実行しすぎているので
Noite
の項目が見つかりません。 -
はありません。
Noite
という項目がHTMLに含まれています。
を使用していることを指摘しておきます。
document.write()
この場合、おそらく問題があることを意味しています。 もしドキュメントがすでに読み込まれているのであれば、新しい
document.write()
は古い内容をクリアし、新しいドキュメントを開始するので
Noite
の項目は見つかりません。
ドキュメントがまだ読み込まれておらず、そのために
document.write()
インラインで HTML を現在のドキュメントに追加する場合、ドキュメントがまだ完全に読み込まれていないため、おそらく
Noite
という項目があります。
解決策としては、スクリプトのこの部分をドキュメントの一番最後に配置し、それ以前のものがすでに読み込まれているようにすることでしょう。 ですから、この部分をボディの最後に移動してください。
document.getElementById('Noite').style.display='block';
そして、その中に
document.write()
文は、ドキュメントが読み込まれた後に、javascript で使用されます (前のドキュメントをクリアして、新しいドキュメントを開始するため)。
さらに
display
プロパティを
"display"
は意味をなさない。 そのための有効なオプションは
"block"
,
"inline"
,
"none"
,
"table"
などなど・・・。 という名前のオプションは知りません。
"display"
というスタイルプロパティがあります。 参照
ここで
の有効なオプションは以下の通りです。
display
プロパティを指定します。
このデモでは、修正されたコードの動作を確認することができます。 http://jsfiddle.net/jfriend00/yVJY4/ . このjsFiddleは、javascriptがドキュメントボディの最後に配置されるように設定されているため、ドキュメントが読み込まれた後に実行されます。
P.S.
if
また、同じ行に複数のステートメントが含まれているため、あなたのコードは非常に誤解を招きやすく、不明瞭です。
何を質問されているのか理解するのにとても苦労しているのですが、あなたのコードのクリーンアップ版が動作しているのをここで見ることができます。 http://jsfiddle.net/jfriend00/QCxwr/ . 以下は、私が行った変更の一覧です。
- スクリプトはボディに配置されますが、参照するコンテンツの後に配置されます。
-
を追加しました。
var
の宣言を変数に追加します (常に使用する良い習慣です)。 -
その
if
文は if/else に変更され、より効率的で、何をやっているのかがわかるようになりました。 -
に対して中括弧を追加しました。
if
の一部であることを明確にするためです。if/else
であり、そうでないものはない。 -
をきちんと閉じています。
</dd>
タグを挿入していましたね。 -
を変更しました。
style.display = '';
からstyle.display = 'block';
. - すべての文の最後にセミコロンを付けました(これも良い習慣です)。
コードです。
<div id="Night" style="display: none;">
<img src="Img/night.png" style="position: fixed; top: 0px; left: 5%; height: auto; width: 100%; z-index: -2147483640;">
<img src="Img/moon.gif" style="position: fixed; top: 0px; left: 5%; height: 100%; width: auto; z-index: -2147483639;">
</div>
<script>
document.write("<dl><dd>");
var day = new Date();
var hr = day.getHours();
if (hr == 0) {
document.write("Meia-noite!<br>Já é amanhã!");
} else if (hr <=5 ) {
document.write(" Você não<br> devia<br> estar<br>dormindo?");
} else if (hr <= 11) {
document.write("Bom dia!");
} else if (hr == 12) {
document.write(" Vamos<br> almoçar?");
} else if (hr <= 17) {
document.write("Boa Tarde");
} else if (hr <= 19) {
document.write(" Bom final<br> de tarde!");
} else if (hr == 20) {
document.write(" Boa Noite");
document.getElementById('Noite').style.display='block';
} else if (hr == 21) {
document.write(" Boa Noite");
document.getElementById('Noite').style.display='none';
} else if (hr == 22) {
document.write(" Boa Noite");
} else if (hr == 23) {
document.write("Ó Meu! Já é quase meia-noite!");
}
document.write("</dl></dd>");
</script>
関連
-
[解決済み】未定義のプロパティ 'forEach' を読み取ることができない
-
[解決済み】中央値の計算 - javascript
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] JavaScript でオブジェクトが特定のプロパティを持つかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaScriptに「NULL合体」演算子はありますか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] JavaScriptはオブジェクトのプロパティの順序を保証するか?
-
[解決済み] Javascriptオブジェクトの最初のプロパティにアクセスする方法は?
-
[解決済み] React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングした
-
[解決済み】JavaScript "Uncaught TypeError: object is not a function" 連想性の質問
-
[解決済み】Google Conversionsが動作しない - スクリプトが読み込まれない
-
[解決済み】ある要素が可視DOMに存在するかどうかを確認するにはどうすればいいですか?
-
[解決済み】SyntaxError: ChromeのJavascriptコンソールでUnexpected Identifierが発生する。
-
[解決済み】SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】TypeError: res.status は関数ではありません。
-
[解決済み】Vueが定義されていない
-
[解決済み】module.exports "モジュールが定義されていません"
-
[解決済み] Uncaught (in promise) TypeError: フェッチに失敗してCorsエラー