Javascript和DOM - insertBefore只执行一次

时间:2013-01-04 16:42:06

标签: javascript dom

我有一个简单的脚本将表行复制到全局javascript变量(我知道在javascript中使用全局变量不是一个好主意,但这只是用于开发)和一个函数在“onClick”事件上插入行的副本。

执行并插入一行。问题是它只会插入一行ONCE。

这是一个示例表

<table id="myTable">
    <tbody>
        <tr id="copyRow">
            <td>Sample Cell</td>
        </tr>
        <tr>
            <td><a href="javascript:void();" onClick="insertRow(copy_row, this.parentNode.parentNode.parentNode)">Insert Row</a></td>
        </tr>
    </tbody>
</table>

以下是我的示例javascript:

<script type="text/javascript">
    copy_row = document.getElementByID('copyRow').cloneNode(true); //Runs when page first runs

    function insertRow(insertRow, insertBeforeMe){
     insertBeforeMe.parentNode.insertBefore(insertRow, insertBeforeMe)  
    }
</script>

我很难过

2 个答案:

答案 0 :(得分:1)

每次调用insertRow函数时都应该克隆节点,这样就可以得到一个新的元素副本,而不是回收一个克隆的行。

copy_row = document.getElementByID('copyRow'); //Runs when page first runs

function insertRow(insertRow, insertBeforeMe){
 insertBeforeMe.parentNode.insertBefore(insertRow.cloneNode(true), insertBeforeMe)  
}

答案 1 :(得分:0)

它甚至不应该运行一次。 JavaScript区分大小写,因此您必须使用:

document.getElementById

document.getElementByID

这是我的working version of your script