如何在单元格中添加colspan和文本?

时间:2015-05-11 11:53:17

标签: javascript html-table tablerow

我插入行和单元格时出错,添加文本(innerHTML,textContent)和colspan。错误如下:

Safari浏览器:

" TypeError:尝试分配给只读属性。"

铬:

"未捕获的TypeError:无法分配给只读属性"

如果删除文本,colspan将起作用,任何其他单元格将显示;如果我删除了colspan,文本将显示。如果我试图保留两者,除了得到错误之外,任何其他存在的细胞都会消失,并且colspan不会起作用。

示例html:

<table id ="my_table">
                    <thead>
                        <tr>
                            <th>text</th>
                            <th>text</th>
                            <th>text</th>
                            <th>text</th>
                            <th>text</th>
                        </tr>

示例JS:

function test3() {

    //get the table id;
    var table = document.getElementById('my_table');

    //create row, cell
    var my_row = table.insertRow(-1);
    var total = my_row.insertCell(0).textContent = "my colspan text";

...或

var total = my_row.insertCell(0).innerHTML = "my colspan text";

...然后

    total.colSpan = "4";
}

当我搜索这个问题时,我读到它存在于iOS8中并且在严格模式下使用时会出现;但是,如果我删除&#34;使用strict&#34;,错误消息将消失,但问题仍将存在。有人说这是一个webkit错误,但同样的事情发生在Firefox中,减去错误信息。

可能相关的链接: TypeError: Attempted to assign to readonly property. on iOS8 Safari

我做错了什么或有解决方法吗?

附录:子优化是添加第二个没有插入文本的单元格,并给它一个colspan。

1 个答案:

答案 0 :(得分:3)

my_row.insertCell(0).textContent = "my colspan text"不返回单元格,它返回分配给textContent

的字符串

       function test3() {

         //get the table id;
         var table = document.getElementById('my_table');

         //create row
         var my_row = table.insertRow(-1);
         //create cell
         var total = my_row.insertCell(0); 
         //set properties
         total.textContent = "my colspan text";
         total.colSpan = 4;
       }
window.addEventListener('load', test3, false);
<table id="my_table" border="1">
  <thead>
    <tr>
      <th>text</th>
      <th>text</th>
      <th>text</th>
      <th>text</th>
      <th>text</th>
    </tr>
  </thead>
</table>