0

やあ、私は IE9 だけに問題があります

最初にテーブルを生成するJavascriptループがあります

   var TABLE = widget.body.getElementsByClassName('classroom')[0];
   var TBODY = widget.createElement('tbody');

        //generate rows & Cells, 10 x 10
        var cID = 0;
        for (var r=0; r<10; r++) {
            var TR = widget.createElement('tr'); 
              for (var c=0; c<10; c++) {  
                    var TD = widget.createElement('td');
                    //TD.id="c"+cID;
                    TD.setAttribute("class",'c'+cID);
                    TD.setAttribute("id",'c'+cID);
                    TD.setAttribute("style","width:90px;");
                    TD.setAttribute("style","height:90px;");
                    cID++;
                    TR.appendChild(TD);
                }
                TBODY.appendChild(TR);
         }
         TABLE.appendChild(TBODY);

どちらがうまくいきますか

次に、この別の関数を呼び出して、テーブルにデータを入力します。

これは、巨大な関数の単なるスニペットです!

var cell_class = cell.toString();   // it gets the cell from another loop say 'c1'
var TCell = widget.body.getElementsByClassName(cell_class)[0]; 
TCell.innerHTML="<a href='#'>image</a>"; // it fails at this point 'null or undefined'

私が持っているHTMLで

<table id="table1" class="classroom">
                    <colgroup>
                        <col width="90" height="70"/>
                        <col width="90" height="70"/>
                        <col width="90" height="70"/>
                        <col width="90" height="70"/>
                        <col width="90" height="70"/>
                        <col width="90" height="70"/>
                        <col width="90" height="70"/>
                        <col width="90" height="70"/>
                        <col width="90" height="70"/>
                        <col width="90" height="70"/>
                    </colgroup>
                </table>

HTML に静的テーブルを追加すると機能しますが、動的にしたいのです。

これは、IE9 以外の現在のすべてのブラウザーで機能します。

誰でも助けてもらえますか

4

1 に答える 1

0

動的生成を支援するためにjQueryテンプレートまたはハンドルバー(またはその他のテンプレートライブラリ)を使用しない特別な理由はありますか?

IEの問題は、マークアップに含まれていない限り、デフォルトでTBODY要素が作成されないことだと思います。他のブラウザは、要素が存在しない場合、暗黙的にその要素を作成すると思います。

マークアップでtbody要素を手動で追加してみてください。

于 2012-11-01T09:37:43.763 に答える