TDエレメントにonclickイベントを動的に追加します。
LightsOut3_new.htmlで、25個あるTDにソースとして、
<td onclick="clk(this);">
と記述するのが面倒だったので、スタイルシートでクラスのイベントが記述できないかと調べてみました。
ieならbehaviorの指定ができそうでしたがsfariなので無理でした。
そこで、bodyのloadの際に動的に貼付けることにしました。
<body onload="load()">
bodyタグのonloadイベントでload()関数を呼びます。
load関数はこんな感じです。
function load() {
allTD = gameboard.getElementsByTagName("td");
for (i=0; i<25; i++){ allTD[i]. onclick = function() {clk(this); };}
}
ポイントは追加する関数に引数があるときの記述ですが、
上記のように右辺を function() {clk(this);}として代入します。
引数がない場合は、. onclick = foo; と書きます。
この場合の注意点は()を書かないことと、
このコード以前のスクリプトで代入したい関数(例ではfoo関数)を記述しておくことです。
このページを参考にしました。