-
ID:IKGpub さんの質問

Javascriptの変数について質問です。

hogeBtn = document.getElementById("hoge");
hogeBtn.onclick = function(){ ←※1
hoge();
}
function foo(){
hogeBtn.style.display = "none"; ←※2
}

一行目で設定した変数を、
※1ではちゃんと使うことができるのに、
※2ではエラーになってしまうのはなぜでしょうか。
どなたかアドバイスをお願いします。

みんなの回答 3 件

ID:4vhUtb さんの回答

※1ではhogeBtn.onclickを設定しているが、※2で使っているのはhogeBtn.style.displayだぞ? 質問の意味がよく分からない

どうせhogeBtnがグローバル変数でどこかで書き換えられたんだろ

ID:IKGpub

最初に変数をつくっておけば
onclickでもstyle.displayでも汎用的に指定が出来るのかな?と思ったのですが、違うようにしないといけないのでしょうか…?

ID:4vhUtb

hogeBtnを作ってるのは※1じゃなくてその1行前だよね、細かいことだけど

で、質問に提示してあるソースだけだと原因は不明。他の部分でhogeBtnに違うものを代入してしまってエラーになっているはず。

これでダメだということではないけど、うまく管理できないとこういうエラーが起きてしまうのでグローバル変数にするのはあまり推奨されない。
クロージャに閉じ込めたりするのがいい。

ID:4vhUtb

あ、※1のくだりは勘違いだった。ごめん

つまり、※1の時点ではhogeBtnに意図したものが入っているけど、
それから関数fooが呼ばれて※2が実行されるまでの間にhogeBtnが書き換わってしまっている。

ID:jMoNkN さんの回答

※2のエラー内容を書いてもらえますか?

ID:rlsZFL さんの回答

ほんとにそれだけのプログラムで動かしてる?
余分なものあるでしょ?

最終更新日:2014-03-22 (1,675 views)

関連するトピックス

ページ上部に戻る