おそらく基本中の基本なのだと思いますが、調べようとしてもキーワードが大きすぎて、どうにもつかみどころがありませんでしたので、こちらで質問させていただきます。内容の稚拙さについてはご容赦ください。
###実装したいこと・試してみたこと
単純な規則に従ってid採番されているオブジェクトに対して、クリックイベントリスナを貼り付けていくというシンプルなスクリプトを実装しようとしています。オブジェクトの呼び出しにはjQueryを使用しています。そのまま書き下ろすと以下のような形になります。
javascript
1$("#object1").click(function(){ testFunc(1); }); 2$("#object2").click(function(){ testFunc(2); }); 3$("#object3").click(function(){ testFunc(3); }); 4$("#object4").click(function(){ testFunc(4); }); 5 6// #object"n"とtestFunc("n")は1:1対応 7 8function testFunc(num) { 9 ... 10}
ただ、これではいくら何でも冗長すぎるので…イベントリスナ貼り付けの部分をfor文でまとめたいのですが、ここがどうにもうまく書けません。まずは下のような形で書いてみました。
javascript
1for (var i=1; i<5; i++) { 2 $("#object"+i).click(function(){ testFunc(i); }); 3}
おそらく変数のスコープの問題だと思うのですが testFunc(i) が期待通りに動いてくれません(iは外側のスコープの値を引いてくれない)。
グローバル変数を宣言するのも何だか仰々しすぎるような気がしてしまって、こういった場合どのように書くのがシンプルなコードなのか、ベテランの方々の書き方をご教示いただきたいです。どうかよろしくお願いいたします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/22 01:42