JavaScript の練習

Dan さんのページJavaScript のプログラムが紹介されていますが、IE ( Internet Explorer ) では動かないそうです。

そこへ JavaScript の入門書を買って二日めのわたしが来ましたよ。

...というわけで入門書を読みつつ修正したのですが、なんと「はてなダイアリー」では JavaScript を書き込むことができない。事情があってのことのようですが、プログラマであるわたしには不便なことです。

取り急ぎ、動くようにするための修正箇所です。Dan さんのところにコメントを書くと長くなりそうなので、こちらに記述します。いつか Dan さんご自身が修正していただけるか、ほかの JavaScript が使えるブロガな方が修正版を公開されると良いのですが。

決め手は、innerHTML の入力先を table tag ではなく、div にすることでした。

まずは init() で table tag も指定します。

 function init(){
    var s='<table cellspacing="0" cellpadding="0">'; // ここで table tag まで指定
    for (var i=0; i<90; i++){
      s += '<tr>';
      for (var j=0; j<90; j++){
        s+='<td id="' + i + ',' + j + '"></td>';
      }
      s += '</tr>';
    }
    s+='</table>';                                   // ここで table tag 閉じます
    $('canvas').innerHTML=s;
    $('button').innerHTML="終了!";
    $('button').setAttribute('onClick', 'stop()');
  }

つぎに canvas 指定された table を div tag に変えます。

<td><table id="canvas" cellspacing="0" cellpadding="0"></table></td>

上記から、

<td><div id="canvas"></div></td>

このように div tag へ変えます。

という修正で、とりあえず IE 6.0 では動きました。IE では table への InnerHTML を許していないみたいですね。

ところで、この修正をした後も問題が残ります。「終了!」ボタンを押しても終了しないのですね。試行回数は 0 に戻るのですが、再び計算をはじめます。IE は clearTimeout() もサポートしていないのでしょうか。

中途半端ですが、とりいそぎご報告まで。