.onmouseover=function()での恥ずかしい勘違い

[追記 / 20100427]
うわー、<script>や<head>を文字参照にしてなかったから途中から表示されてなかった。

id=”btn”な要素があるとして
<head>内に以下のjsを書くか読み込む

1)こちらの記述は動いて

2)こっちだと動かない

なぜだ~


.onmouseover=function()ってあれでしょ
as的な解釈だとマウスオーバー時に{}内の処理をすんでしょ?
こんな感じ

なんで反応しないんだろう?
もしかしてjavascriptってヤツは、window.以下のイベント内にすべての処理を書かないといけないのか!?(偏見です)
いやいやそれはないですね、docment.writeは<script>直下に書いても使えるものね。

検索してもhtmlのタグに

みたいなちょっと古そう?(*1)なサンプルとか
onload=function(){}の中にあるサンプル(1のようなもの)しか見つからなかった

恥ずかしいけど教えてgooで質問でもしてみようかな…と、質問文を書いてる途中でなぜか閃いた

<script>直下から呼び出される時、「id=”btn”な要素」はまだ存在していないのでは?
だから「undefinedかnullみたいなもん.onmouseover=function(){}」は処理できないのか!?

そして
2)をの直前に移動したら動いたです><
1)が動くのは
.onloadはhtmlの読み込みが終わった時に呼び出されるイベントなので
onmouseover=function(){}を定義するときid=”btn”な要素は存在してます。

*1
まだjavascriptの事よくわからない人間のになぜそう思うのかというと、jsをcssと同じようなものだと考えたから(htmlと分離した方がよかったり、Web標準があったり)。
cssをhtmlタグの中にstyle=”xxx:yyy;”で書くサンプルを載せてるサイトは、往々にして理解の浅いものであったり、今じゃもう使わない古い時代のcssの使い方だったりあてにならない。


コメントを残す

メールアドレスが公開されることはありません。

You can add images to your comment by clicking here.