onclickでjsのfunctionを呼ぼうとしたら、ちゃんと定義してるのにis not definedって怒られたでござる

jquery-logo

jQueryを使ったjsを実装中に、js内に定義した関数を呼ぼうとしたら怒られた話。

呼ぼうとしてる関数が is not defined ってconsoleに出てきてもう何がなんだか。。 っていう。

基礎がなってない! 全然基礎をすっ飛ばして開発とかしてるからいかんのだ。
けど基礎的な書物は読みたいの大杉。 jsはちょっと後回しになりそうだなぁ。。。
ていうかドキュメントをちゃんと嫁と何度言ったら(ry

というわけで戒めエントリー

はまったこと

簡単に言うと、htmlの何らかの要素にclickイベントを設定したかったので

html

<a href="#" onclick="aaa();">カローラ</a>

js

$(window).load(function(){
   // がちゃがちゃと処理
   function aaa(){
      console.log("はだしのげん");
   }
})

ってな感じに書いてみた。

けど、jQuery のコールバック関数内で宣言しててもアカンらしい。

これはstackoverflowにも同じような人がいますね。
http://stackoverflow.com/questions/4242541/function-not-calling-within-an-onclick-event

対処法1 window.loadの外で宣言する

すごくシンプルで、グローバルなスコープで書いてやりますと動くようであります。
まぁ、そりゃそうか笑
js

$(window).load(function(){
   // がちゃがちゃと処理
});

function aaa(){
   console.log("はだしのげん");
}

対処法2 jQeryでclickイベントをバインドさせる

まぁ、IDふってclickでやりたい処理書いた方が保守性高まりそうですよね。

html

<a href="#" id="aaa">カローラ</a>

js

$(window).load(function(){
   // なんやかんやと処理
   $('#aaa').click(function(){
      console.log('はだしのげん');
   });
})

ちなみに裸足のゲンに深い意味は全くない。
たまったま靴下を脱いで素足でコーディングしていたからである。

猛暑日が続いて本当に暑い毎日ですねー。
クーラーをかけたお部屋で素足でコーディング気持ちがいいですねヽ(=´ω`=)ノ

おわり

2013-07-13 | Posted in JavaScript - jQueryNo Comments » 


関連記事

Comment





Comment



*