[memo][javascript] ループとイベント登録

2008.5.29(木) 11:40   タグ: 覚え書き, JavaScript

はじめに

昨日,相方 (お仕事的な意味で) に聞かれながらもすぐに答えられなかったので,復習の意味もこめてメモ.

問題

<div id="target">
  <div>A</div>
  <div>B</div>
  <div>C</div>
</div>

id="target"div 要素内のそれぞれの div 要素に対してクリックイベントを登録したい...そんなとき,ついつい次のように書いてしまいます.(自分と相方(お仕事的な意味で)が.)

<script type="text/javascript">
var divs = document.getElementById( ‘target’ )
                   .getElementsByTagName( ‘div’ )
;
for( var i = 0; i < divs.length; i++ ) {
  divs[i].addEventListener( ‘click’, function() {
    alert( i );    
  } );
}
</script>

このコードを実行すると,イベント登録したどの要素 (A,B,C とそれぞれ表示されるはず) をクリックしても,

3

なアラートしか表示されません.

一解決策

こんな風にしてみました.

<script type="text/javascript">
var divs = document.getElementById( ‘target’ )
                   .getElementsByTagName( ‘div’ )
;
for( var i = 0; i < divs.length; i++ ) {
  ( function() {
      var j = i;
      divs[i].addEventListener( ‘click’, function() {
      alert( j );
    } );
  } )();
}
</script>

それぞれの要素をクリックすると,

0
1
2

のようにアラートが表示されるかと.

解説

サイ本 は 4.3.1 項,最初の 2文がすべてを物語っていましたね.

C や C++、Java と異なり、JavaScript にはブロックレベルのスコープがありません。ある関数で宣言された変数は、どのブロックで宣言されたのかにかかわらず「関数全体」で有効です。

David Flanagan,村上 列 訳 『JavaScript 第5版』 オライリー・ジャパン,p.52

おわりに

ここしばらく jQuery (そういえば,1.2.6 が出てますね) を使ってばかりで意識すらしていない状況だったので,改めて勉強し直せました.

クロスブラウザ問題とか 1つのイベントリスナーを使い回すとかは,この際おいときましょう.

「初めてのJavaScript」読書会とかどうか lang:ja

2008.5.27(火) 11:36   タグ: JavaScript
「初めてのJavaScript」

はじめに

投げっぱなしてみるテスト.

投げっぱなしの内容

初めてのJavaScript を本屋で見つけたのでとりあえず買ってみました.

サイ本 敷居高くね? と感じられている方 (といっても,私にとっても難しすぎる本です ><) 向けに,そんな読書会があってもいいのかな,とふと思いました.

各章末には練習問題もあるので,このあたりを課題とかディスカッションとかしてみてもおもしろいかもですね.

おわりに

DeLLa.JS で二部構成にしてみるのもいいかも.

おまけ

やっぱり 「子サイ本」とでも呼ぶのでしょうかね?

ちなみに,各本の後ろの方の解説によると,サイ本のサイは 「ジャワサイ」,子サイ本(仮)のサイは 「クロサイ」 だそうです.

東京小出張記 その5: The JUI 2008 Tokyo

2008.5.25(日) 21:58   タグ: JavaScript, イベント, 写真ライフ
リクルート銀座8丁目ビル

はじめに

東京小出張記最終回は,今回の小出張の 2大目的のひとつである The JUI 2008 Tokyo,このカンファレンスについてのお話,というか写真とメモ書きです.

そのときにメモったのをそのまま書きます.解釈が間違ってる部分もあると思いますが...

では以下.

記事の続き

東京小出張記 その4: 鮫洲から銀座へ

2008.5.24(土) 3:37   タグ: ぶらり旅, 写真ライフ
品川へ向かう前に朝食

はじめに

「ビジネス旅館 松島」をチェックアウト,The JUI 2008 Tokyo 会場へ向かうまでのお話です.

ちなみに,品川駅までは歩いてみました.

鮫洲 ~ 品川

とある橋の欄干にて

とにかく国道15号線を北上...

北品川駅近くのとある橋の欄干

意外と簡単にたどり着けました.

新橋駅を降りて銀座

新橋駅から The JUI 2008 Tokyo 会場まではすぐ近くでした.

R25カフェでまったり長居

時間にかなり余裕があったので,ぶらりとしていたところ 「R25カフェ」 を発見.ここで時間をつぶしてました.

ThinkPad を取り出して,電源を確保して...長居させていただきました.

おわりに

「その 5」 は The JUI 2008 Tokyo のお話です.

東京小出張記 その3: ひきこもりの週末 ~ リャマ本・アルパカ本ひとり読書会 ~

2:58   タグ: Perl, ぶらり旅
読書の日々

はじめに

YAPC::Asia 2008 参加後から The JUI 2008 当日までの空白(?)の数日間のお話を,以下.

基本生活

3泊した宿 「ビジネス旅館 松島」

大岡山から鮫洲(さめず)へ移動,「ビジネス旅館 松島」の 4畳半な部屋に引きこもって リャマ本アルパカ本 を読んでました.

ちょこっと外出

カフェ ムジカ ドリアセット @ カフェ ムジカ

青物横丁駅 近くの カフェ・ムジカ で昼食をとったり...

あおよこ

その帰りに少し散歩したり...

餃子の屋台 キムチチャーハンと餃子

風呂上がりの夕食に出かけたり...

振り返ってみると,「食べる」 以外外出してませんでしたね,ホント.

おわりに

Perl について知らないことだらけだったことを実感すると同時に,その辺を改めて学んだ感じです.といっても,ちょいと高度めのアルパカ本の方は,今後も何度か読み直すことになりそうですけどね.

ではでは,「その 4」へ.

ぶろぐ内検索

WCAN 2008 Autumn

wcan2008autumn

DeLLa.JS

細々公開ちゅう

  • ごよてい?
  • にこぐらふ
  • twitomonitor [ついともにた]
  • issm's ...
  • 今さら攻略 スーパーマリオブラザーズ 2

I'm doing...

Loading...

最近のエントリ

最近のトラックバック

最近のコメント

タグ

月別

数値いくつか

  • issmの泳いだ距離
  • issmの100m個メタイム(秒)
  • issmのBMIとissmの体脂肪率
  • issmの最高血圧とissmの最低血圧

スポンサード リンク

メタ情報