javascript insertAdjacentElement无法正常工作

时间:2014-11-17 14:05:59

标签: javascript google-chrome internet-explorer

在我的javascript代码中使用insertAdjacentElement。 它在IE中工作状态良好,但在Chrome中它可以工作但不是预期的方式。它在其他地方插入新的HTML。所以我想要替代这种方法。我也试过appendChild和insertBefore但是徒劳无功。

这是我的代码行

newPage = nd.insertAdjacentElement("beforeBegin", oNewItem);

由于

2 个答案:

答案 0 :(得分:0)

我相信相当于

newPage = nd.parentElement.insertBefore(oNewItem, nd);

你可以在这里试试: http://jsfiddle.net/faz23p97/

答案 1 :(得分:-2)

标题应在"JavaScript DOM insertBefore isn't used properly"中更改。

这是因为,即使您没有放入DOM,浏览器也会自动创建一个包裹表行的<tbody>元素。因此,#formtable不是#submitrow的父级,而这就是您收到错误的原因。

试试这个:

formtable.tBodies[0].insertBefore(new_tr, submitrow);

或者,更一般地说:

submitrow.parentNode.insertBefore(new_tr, submitrow);

(在支持它的浏览器中,甚至还有这个:

submitrow.insertAdjacentElement("beforeBegin", new_tr);

Internet Explorer,Chrome,Safari和Opera都支持它,但Firefox并不容易,但它可以很容易地填充。无论如何,我不建议使用这些东西。)

而且,作为一般建议,在写下表时始终使用标记:

<table id="formtable">
    <tbody>
        <tr>
            <td>Number : </td>
            <td><input type="text" name="num[]" /></td>
        </tr>
        <tr id="submitrow">
            <td><input type="button" value="Add one more" onclick="addRow()" /></td>
            <td><input type="submit" value="Go!" /></td>
        </tr>
    </tbody>
</table>

当然,<thead><tfoot>当你需要它们时。