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 回答