Javascript appendChild()调用不在IE中工作

时间:2009-12-12 17:58:31

标签: javascript dom

有人可以解释为什么这段脚本在IE中不起作用?它似乎在Firefox中运行正常。 我是appendChild()API的新手。

<html>
<head>
<script type='text/javascript'>

function makeTable()
{
   nTable=document.createElement('table');
   nTable.setAttribute('id','myTable');
   nTable.setAttribute('border','1');

   nRow1=document.createElement('tr');
   nData11=document.createElement('td');
   nData11.setAttribute('colspan','2');
   nCenter11=document.createElement('center');
   nBold=document.createElement('b');
   nBold.appendChild(document.createTextNode('Title'));
   nCenter11.appendChild(nBold);
   nData11.appendChild(nCenter11);
   nRow1.appendChild(nData11);

   nRow2=document.createElement('tr');
   nData21=document.createElement('td');
   nCenter21=document.createElement('center');
  nCenter21.appendChild(document.createTextNode('21'));
  nData21.appendChild(nCenter21);
  nData22=document.createElement('td');
   nCenter22=document.createElement('center');
  nCenter22.appendChild(document.createTextNode('22'));
  nData22.appendChild(nCenter22);
  nRow2.appendChild(nData21);
  nRow2.appendChild(nData22);

  nTable.appendChild(nRow1);
  nTable.appendChild(nRow2);

  alert('Almost there !');
  try
  {
   document.getElementById('container').appendChild(nTable);
  }
  catch(e)
  {
    alert(e.message);
  }
   return;

}

</script>
</head>
<body>
<div id='container'>
</div>
<input type=button value='Go' onclick='makeTable();'>
</body>
</html>

1 个答案:

答案 0 :(得分:4)

http://msdn.microsoft.com/en-us/library/ms532998(VS.85).aspx#TOM_DOM。与Crescent Fresh在评论中提到的相似,IE需要在表格中插入一个tbody元素,以便您可以使用DOM:

  

注意 Internet Explorer需要这样做   你创建一个 tBody 元素并插入   使用DOM时,它进入。   因为你正在操纵   文档树直接,Internet   资源管理器不会创建 tBody ,   这是自动隐含的   使用HTML。