![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
-----
<ul>
<li>test1</li>
<li>test2</li>
<li>test3</li>
</ul>
<script type='text/javascript'>
(function(){
var li = document.getElementsByTagName('li');
for(var i=0,max=li.length; i<max; i++){
li[i].onclick = function(){
alert(i);
};
}
})();
</script>
-----
上記スクリプトを実行すると、全てのli要素でクリックしたときに "3" がalertされます。
0,1,2 をそれぞれalertしたいのですが、どういった方法が考えられるでしょうか?
現在作成しているスクリプトでは、下記のようにidに値を保持しています。
もう少しスマートな方法がある気がするのですが…。
---
li[i].id = 'test' + i;
li[i].onclick = function(){
alert(this.id.replace(/^test(\d+)/, '$1'));
};
---
No.1
- 回答日時:
(function(){
var li = document.getElementsByTagName('li');
for(var i=0,max=li.length; i<max; i++){
li[i].onclick = (function(i){ return function() {alert(i);};})(i);
}
})();
とか
なるほど!
functionオブジェクトを return したのですね。
私も
li[i].onclick = (function(i){ alert(i); })(i);
までは思いついたのですが、これでは即実行されてしまってどうしたものかと悩んでいました。
変数を定義しなくていいので非常にいい方法だとは思うのですが、コードが長いのが悩みどころです…。
もっとも、慣れれば気にならなくなるようにも思えるので、大きな問題ではないかもしれません。
ともあれ、解決の糸口が見えてほっとしました。
ありがとうございます。
> 補足要求
どのような情報が足りないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- HTML・CSS display flex の使い方 1 2022/04/25 19:13
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JQuery UIで、表示したタブの中...
-
jqueryのsortableで一部ソート...
-
JS <a></a>タグ内のリンク先ア...
-
クリックした<a>タグのみにClas...
-
「jQuery」アコーディオンメニ...
-
javascriptテキストBOX色を元に...
-
textareaに画像を表示したい
-
MAX関数を使ってからLEFT JOIN...
-
JSPでの画像ファイル表示
-
【OpenCV】二値画像後、白の部...
-
jspでcssが読み込めない
-
C言語のポインタ表現
-
Slick.jsのオプションrtlについて
-
複数画像のランダム複数表示(...
-
getElementByIdの戻り値がnull...
-
jQueryでサーバー上のファイル...
-
重なった画像にクリックイベン...
-
キャラクターがぴょこんと飛び...
-
JavaScriptで変更した属性の元...
-
初期状態でテーブルの非表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jqueryのsortableで一部ソート...
-
「jQuery」アコーディオンメニ...
-
javascript テキストエリアを1...
-
jquery ドロップダウンメニュー...
-
jQueryでネスト構造の<li>がク...
-
クリックした<a>タグのみにClas...
-
jQueryの配列の渡し方について
-
for(var i=0;...) の i の値を...
-
JavaScriptによる疑似プルダウ...
-
jQueryのeqで最後からn番目以降...
-
javascriptでEnterキーをtabキ...
-
Jquery タブで、4つのliのうち...
-
【javascript で動的に a タグ...
-
どの<li><a> が押されたか判別...
-
マウスオーバーで開閉できるア...
-
同一ページ内で、任意の文字列...
-
jqueryプルダウンメニュー個別着色
-
JavaScript インクリメントの書...
-
複数の画像をランダム(シャッ...
-
タブ切り替えの初期表示について
おすすめ情報