![](/img/trans.png)
[英]Failed to execute 'insertBefore' on 'Node': parameter 1 is not of type 'Node'
[英]Uncaught TypeError: Failed to execute 'insertBefore' on 'Node': parameter 1 is not of type 'Node'
在这个Dom操作上遇到错误
var prependData = $('#income_ranges').children().first().clone();
var prependedData = $('#income_ranges').children().last();
var list = document.getElementById("income_ranges");
list.insertBefore(prependData, prependedData);
Uncaught TypeError: Failed to execute 'insertBefore' on 'Node': parameter 1 is not of type 'Node'.
我运行此代码时出错,我不知道为什么。 任何帮助表示赞赏。
现在无法测试,但我很确定你得到这个错误,因为你在jQuery对象和vanilla JS对象之间切换。 在jQuery对象上使用.get()
来获得它的vanilla对应物(参见文档 )。
所以将最后一行改为:
list.insertBefore(prependData.get(0), prependedData.get(0));
或者去完整的jQuery(在我看来更漂亮):
var prependData = $('#income_ranges > :first-child').clone();
var prependedData = $('#income_ranges > :last-child');
prependData.insertBefore(prependedData);
您要添加到insertBefore()的元素是jQuery对象,而不是本机DOM对象,这正是它所期望的。 您可以通过将prependData和prependedData都转换为其本机类型来解决此问题。
var prependData = $('#income_ranges').children().first().clone()[0]; var prependedData = $('#income_ranges').children().last()[0]; var list = document.getElementById("income_ranges"); list.insertBefore(prependData, prependedData);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="income_ranges"> <span> Hello </span> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.