表,tr,td标签上的document.createElement失败了IE8

时间:2013-04-08 22:03:09

标签: javascript createelement

正如标题所说,我遇到了IE8的问题(适用于FF和IE9)。以下代码不会产生任何错误,如果我替换div,ul和li;有用。我做了一些搜索,并且没有找到任何关于(table,tr,td)标签的任何内容,使用document.createElement与IE8不支持。我哪里错了?

以下是代码:

<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    <title>My Page Title</title>
  <script>
    function init() {
      var ele = document.getElementById('content');
      var table = document.createElement('table');
      var tr = document.createElement('tr');
      var td = document.createElement('td');
      var txt = document.createTextNode('IE8');

      td.appendChild(txt);
      tr.appendChild(td);
      table.appendChild(tr);
      ele.appendChild(table);
    }
   </script>
  </head>
  <body onload="init();">
    <div id="content"></div>
  </body>
</html>

3 个答案:

答案 0 :(得分:2)

您不能仅使用createElement()函数来创建table, trtd来创建整个表格元素。

相反,您必须使用表格对象的insertRow()insertCell()功能

供参考,请查看:

http://viralpatel.net/blogs/dynamically-add-remove-rows-in-html-table-using-javascript/

修改

即使我以同样的方式思考IE问题, 购买我发现实际上createElement()要在IE7中工作,您必须创建tbody对象并将其附加到table对象和tr对象tbody对象

tb = document.createElement("tbody")  
var tbody  = document.createElement('tbody'); 
table.appendChild(tbody);
var table_row  = document.createElement('tr'); 
tbody.appendChild(table_row)// 

答案 1 :(得分:1)

只需在标记中添加<!DOCTYPE html>即可。 在IE7及更高版本中,没有DOCTYPE的默认渲染是Quirks模式(IE5)。

答案 2 :(得分:0)

试试这个:

  var ele = document.getElementById('content');
  var table = document.createElement('table');
  ele.appendChild(table);
  var tr = document.createElement('tr');
  table.appendChild(tr);
  var td = document.createElement('td');
  tr.appendChild(td);
  var txt = document.createTextNode('IE8');
  td.appendChild(txt);