Javascriptの変数について質問です。
hogeBtn = document.getElementById("hoge");hogeBtn.onclick = function(){ ←※1 hoge();}function foo(){ hogeBtn.style.display = "none"; ←※2}
一行目で設定した変数を、※1ではちゃんと使うことができるのに、※2ではエラーになってしまうのはなぜでしょうか。どなたかアドバイスをお願いします。
※1ではhogeBtn.onclickを設定しているが、※2で使っているのはhogeBtn.style.displayだぞ? 質問の意味がよく分からない
どうせhogeBtnがグローバル変数でどこかで書き換えられたんだろ
最初に変数をつくっておけばonclickでもstyle.displayでも汎用的に指定が出来るのかな?と思ったのですが、違うようにしないといけないのでしょうか…?
hogeBtnを作ってるのは※1じゃなくてその1行前だよね、細かいことだけど
で、質問に提示してあるソースだけだと原因は不明。他の部分でhogeBtnに違うものを代入してしまってエラーになっているはず。
これでダメだということではないけど、うまく管理できないとこういうエラーが起きてしまうのでグローバル変数にするのはあまり推奨されない。クロージャに閉じ込めたりするのがいい。
あ、※1のくだりは勘違いだった。ごめん
つまり、※1の時点ではhogeBtnに意図したものが入っているけど、それから関数fooが呼ばれて※2が実行されるまでの間にhogeBtnが書き換わってしまっている。
※2のエラー内容を書いてもらえますか?
ほんとにそれだけのプログラムで動かしてる?余分なものあるでしょ?
みんなの回答 3 件
※1ではhogeBtn.onclickを設定しているが、※2で使っているのはhogeBtn.style.displayだぞ? 質問の意味がよく分からない
どうせhogeBtnがグローバル変数でどこかで書き換えられたんだろ
※2のエラー内容を書いてもらえますか?
ほんとにそれだけのプログラムで動かしてる?
余分なものあるでしょ?
関連するトピックス