你可以这样
b.htm
==========
<script>
parent.addRow(document.getElementById("tab2").getElementsByTagName("tbody")[0].children[0].children[0].innerHTML);
</script>a.htm
=========
<script language="javascript">
function createRow()
{
    document.getElementById("genRow").src='b.htm';
}
function addRow(trObj)
{
    var t = document.getElementById("tab1").getElementsByTagName("tbody")[0].children[0].children[0];
    //t.appendChild(trObj);
    t.insertAdjacentHTML("beforeEnd","<br>"+trObj);
}
</script>

解决方案 »

  1.   

    你可以通过更新 xml来实现添加,嘿嘿
      

  2.   

    这样试试:<html>
    <head>
    <title>File A</title>
    </head><body>
    <input type="button" value="Add Row" onclick="addRow()" />
    <table id="tab1">
        <tr><td><select onchange="alert('a')"><option>a</option><option>b</option></select></td></tr>
    </table>
    <iframe id="genRow" style="display:none" src=""></iframe>
    <script language="javascript">
    function addRow()
    {
        var t = document.getElementById("tab1").getElementsByTagName("tbody")[0];
        var r = t.insertRow(t.rows.length);
        var c = document.createElement("td");
        r.appendChild(c);    try{
    document.getElementById("ihRow").childNodes[0].childNodes[0].onchange=function(){}
    document.getElementById("ihRow").setAttribute("id","");
    }catch(e){}
        var trObj = t.rows[0].cloneNode(true);
        trObj.setAttribute("id","ihRow");
        t.insertBefore(trObj,r);    t.removeChild(r);
    }
    </script>
    </body>
    </html>
      

  3.   

    当点击a.htm中"Add Row"按钮一次的时候新增行的select onchange事件可用, 但当连续点两次以上时只有最后增加行的select onchange事件可用, 为什么会这样??上面的回复看错楼主题意了,以为你要实现只有最后一个事件可用,如果需要每个都可用那更简单了,直接clone就好了:<html>
    <head>
    <title>File A</title>
    </head><body>
    <input type="button" value="Add Row" onclick="addRow()" />
    <table id="tab1">
        <tr><td><select onchange="alert('a')"><option>a</option><option>b</option></select></td></tr>
    </table>
    <iframe id="genRow" style="display:none" src=""></iframe>
    <script language="javascript">
    function addRow()
    {
        var t = document.getElementById("tab1").getElementsByTagName("tbody")[0];
        var r = t.insertRow(t.rows.length);
        var c = document.createElement("td");
        r.appendChild(c);    var trObj = t.rows[0].cloneNode(true);
        t.insertBefore(trObj,r);    t.removeChild(r);
    }
    </script>
    </body>
    </html>
      

  4.   

    石头兄:
    是不是从别的页面返回的就不行啊? 我这边老是报"invalid argument"错误
      

  5.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title>File A</title>
    </head><body>
    <input type="button" value="Add Row" onclick="addRow()" />
    <table id="tab1">
        <tr><td><select onchange="alert('a')"><option>a</option><option>b</option></select></td></tr>
    </table><table id="tab2" style="display:none">
    <tr><td><select onchange="alert('a')"><option>a</option><option>b</option></select></td></tr>
    </table>
    <script language="javascript">
    function addRow()
    {
        var t = document.getElementById("tab1").getElementsByTagName("tbody")[0];
        var r = t.insertRow(t.rows.length);
        var tmp = document.createElement("td");
        r.appendChild(tmp);
        var trObj = document.getElementById("tab2").getElementsByTagName("tbody")[0].rows[0];
        t.insertBefore(trObj, r); 
        t.removeChild(r);
    }
    </script>
    </body>
    </html>
    =========================================
    如上代码, 从另一个table里复制过来, 第一次可以, 再点一次就玩不转了:(
      

  6.   

    大家帮忙看看啊:
    a.htm
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title>File A</title>
    </head><body>
    <input type="button" value="Add Row" onclick="createRow()" />
    <table id="tab1">
        <tr><td><select onchange="alert('a')"><option>a</option><option>b</option></select></td></tr>
    </table><table id="tab2" style="display:none">
    <tr><td><select onchange="alert('a')"><option>a</option><option>b</option></select></td></tr>
    </table>
    <iframe id="genRow" style="display:none" src=""></iframe>
    <script language="javascript">
    function createRow()
    {
        document.getElementById("genRow").src='b.htm';
    }
    function addRow(trObj)
    {
        alert(trObj.children[0].innerHTML);
        var t = document.getElementById("tab1").getElementsByTagName("tbody")[0];
        var r = t.insertRow(t.rows.length);
        var tmp = document.createElement("td");
        r.appendChild(tmp);    t.insertBefore(trObj, r); 
        t.removeChild(r);
    }
    </script>
    </body>
    </html>b.htm
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title>File B</title>
    </head><body>
    <table id="tab2">
    <tr><td><select onchange="alert('a')"><option>a</option><option>b</option></select></td></tr>
    </table><script>
    var tmp = document.getElementById("tab2").getElementsByTagName("tbody")[0].rows[0].cloneNode(true);
    parent.addRow(tmp);
    </script>
    </body>
    </html>报"Invalid argument"错误
      

  7.   

    不明白你加上了,又删除要干什么function addRow(trObj)

        var t = document.getElementById("tab1")
        var r = t.insertRow(t.rows.length);
        var c = r.insertCell(-1)
        c.innerHTML=trObj.children[0].innerHTML   
    }
      

  8.   

    按孟老大的思路往下走逐个复制TD的内容解决问题了:), 不知道直接复制TR对象能不能解决问题?
    var t = document.getElementById("tab1")
    var r = t.insertRow(t.rows.length);
        
    for (var i = 0, n = trObj.children.length; i < n; i++)
    {
        var c = r.insertCell(i);
        c.innerHTML = trObj.children[i].innerHTML;
    }