<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>11</title>
<script language=javascript type =text/javascript>
function insert()
{
   var tr=document.createElement("tr");
   for(var i=0;i<2;i++)
   {
   var td=document.createElement("td");
   td.innerText="niH";
   tr.appendChild (td);
   
   }
   
   tb.appendChild (tr);
    }
</script>
</head><body>
     <table  id="tb"  style="table-layout:fixed;border-collapse:collapse;border:1px solid red ;width:47%">
      <tr><td>1</td><td>2</td></tr>
      <tr><td>3</td><td>4</td></tr>
     <tr><td>5</td><td>6</td></tr>     </table>
     <input type=button  value ="点击我" ondblclick="insert()" >
</body></html>
我用上面的方法不能实现,添加行为什么啊,还有tb.appendChild (tr);跟tb.insertrow()有什么区别吗?

解决方案 »

  1.   

    火狐下出的错吧?  因为火狐会给表格加上<tbody>标签, 所以你的tr就加到 <tbody>后面去了, 没包含在里面, 肯定实现不了啊。
      

  2.   


    <html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>11</title>
    <script language=javascript type =text/javascript>
    function insert(){
    var tr=document.createElement("tr");
    for(var i=0;i<2;i++){
    var td=document.createElement("td");
    td.innerText="niH";
    tr.appendChild (td);
    }
    tb.appendChild(tr);
    }
    </script>
    </head><body>
    <table style="table-layout:fixed;border-collapse:collapse;border:1px solid red ;width:47%">
    <tbody id="tb" >
    <tr><td>1</td><td>2</td></tr>
    <tr><td>3</td><td>4</td></tr>
    <tr><td>5</td><td>6</td></tr>
    </tbody>
    </table>
    <input type=button value ="点击我" ondblclick="insert()" >
    </body>
    </html>加个tbody就可以了
      

  3.   

    appendChild :是XML DOM的方法http://www.w3school.com.cn/xmldom/dom_nodes_add.aspinsertRow :是HTML DOM的方法http://www.w3school.com.cn/htmldom/met_table_insertrow.asp
      

  4.   


    <html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>11</title>
    <script language=javascript type =text/javascript>
    function insert()
    {
    var tr=document.createElement("tr");
    for(var i=0;i<2;i++)
    {
    var td=document.createElement("td");
    var text = document.createTextNode("aaaaaaaaaaaaa");
    td.appendChild(text);
    tr.appendChild(td);}document.getElementById("tb").getElementsByTagName("tbody")[0].appendChild(tr);
    }
    </script>
    </head><body>
    <table id="tb" style="table-layout:fixed;border-collapse:collapse;border:1px solid red ;width:47%">
    <tr><td>1</td><td>2</td></tr>
    <tr><td>3</td><td>4</td></tr>
    <tr><td>5</td><td>6</td></tr></table>
    <input type=button value ="点击我" ondblclick="insert()" >
    </body></html>
      

  5.   

    楼上的大哥,为什么要加tbody 啊?小弟我不理解哦?
      

  6.   

    完整的表格是:
    <table>
    <thead><tr>...</tr></thead>
    <tbody><tr>...</tr></tbody>
    <tfoot><tr>...</tr></tfoot>
    </table>其中<thead>、<tbody>、<tfoot>可以省略,在浏览器解释程序的时候会自动添加,如果有用了<thead>或者<tfoot>,那就一定要加tbody,在js中添加表格行的时候要指定添加在这三者的其中一个里面,要不然浏览器不知道添加在哪里,就会出错(个人理解)
      

  7.   

    appendChild 只是在table的最后一行添加一个元素
    而insert()则是有参数的,如果是-1则效果和上面的是一致的,如果其他的数字的话则是在数字所在行的前一行添加,而且在火狐中获取table对象最好用document.getElementById来获取
      

  8.   

    加tbody是为了兼容火狐, 不加的话在IE下完全正常,但是去了火狐就会出错了, 火狐的内核会自动补全不规则的html标签。  table会被加上tbody标签, 你装个Firebug看看火狐下的表格吧, 一看你就明白了。
      

  9.   

    8楼的兄弟,我这样写在IE也实现不了啊,加了TBODY 后IE才能显示 我要实现的功能!
      

  10.   

    4楼正解 
     你的 tb.appendChild(tr); 是错误的