在我的javascript代码中使用insertAdjacentElement。 它在IE中工作状态良好,但在Chrome中它可以工作但不是预期的方式。它在其他地方插入新的HTML。所以我想要替代这种方法。我也试过appendChild和insertBefore但是徒劳无功。
这是我的代码行
newPage = nd.insertAdjacentElement("beforeBegin", oNewItem);
由于
答案 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>
当你需要它们时。