2013-04-22 39 views
0

我有以下功能追加行和单元格创建一个表时为空table的rowIndex使用Javascript

 function createTable(size) { 
      var table = document.getElementById("gameTable"); 
      for (var i=0; i<size; i++) { 
       var tr = document.createElement("tr"); 
       for (var j=0; j<size; j++) { 
        var td = document.createElement("td"); 
        tr.appendChild(td); 
       } 
       table.appendChild(tr); 
       tr.rowIndex = i; 
      } 

     } 

到目前为止好。

我的问题是,后来,当我试图达到表内的特定细胞:

var x = target.parentNode.rowIndex; 
var y = target.cellIndex; 

table.rows[x].cells[y].innerHTML = 'blah' 

target是用户点击特定的TD

rows[x]索引总是-1。每次我尝试上面的行时,我得到一个错误:“不能读属性”单元格的未定义“
我甚至尝试手动设置每行的rowIndex它应该是(在函数内),但无济于事。

cellIndex出来很好,但rowIndex是-1,并且每一个新创建的表行。

我该怎么做才能纠正这个问题?

+1

当您尝试访问表时,您的代码在哪里? – skyline3000 2013-04-22 13:50:14

+1

你真的应该追加到tbody而不是表格元素。 – epascarello 2013-04-22 13:54:09

+0

我编辑过,使其更清晰。一个表格元素已经存在,我只需添加TR和TD。 – frrlod 2013-04-22 13:56:02

回答

0

这可以通过将<tr>元素附加到<tbody>来解决。

 function createTable(size) { 
      var table = document.getElementById("gameTable"); 
      var tb = document.createElement("tbody"); 
      for (var i=0; i<size; i++) { 
       var tr = document.createElement("tr"); 
       for (var j=0; j<size; j++) { 
        var td = document.createElement("td"); 
        tr.appendChild(td); 
       } 
       tb.appendChild(tr); 
      } 
      table.appendChild(tb); 
     } 
+0

表格创建工作正常,没有tbody Chrome。问题必须在于他如何访问'.rows []'属性。 – Alnitak 2013-04-22 14:27:52