3日いろいろなサイトをあたってようやく解決.
現象:document.getElementById(“dia”).innerHTML = hoge;
で,JavaScriptの書き方で反映されないときがある.
自分用時刻表アプリを書いています.出発までの残時間はリアルタイムで反映され便利です.問題は,終バスが出た後のに「本日終了〜」みたいな文字を入れたいのですが,それが表示されずエラーが出ます.
出るエラーは
TypeError: document.getElementById(…) is null
で,この意味はどうやら
「おまえ,そんなID無いよボケ!!」
みたい.
でもHTML上にはちゃんと,
<div.time id=”dia”><p>aaa</p></div>
があります.
で,3日間いろいろなサイトを当たりましたが,どうも実行順の問題のようです.
HTML書類は行の上から実行されますが,HTMLの最後に書かれている<DIV>タグを読み込む前にID検索しようとして,無いと言われるみたい.
解決方法は,HTML全部読み込んだ後にID検索すればいいじゃん!ってことなんですが,ここにも罠が.
</script>の直前にgetDocument~が入っているfucnctionのshowTime()を実行させようと,
window.onload=showTime();
と書いてもエラーが.
何でも,この場合は
window.onload=showTime;
と()無しで実行するらしい.
はぁ〜?何でしょこれ?
()をつけると関数を実行,()をつけないと関数を参照という意味らしいですが,,見に行くって,,ねぇ
でもこれでうまく行きそう.