【问题标题】:Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node' in javascript无法在 'Node' 上执行 'removeChild':参数 1 不是 javascript 中的 'Node' 类型
【发布时间】:2018-03-14 12:35:44
【问题描述】:

我正在使用 javascript 在文本行上上下移动,当我在 Chrome 上运行时,它会在控制台错误浏览器上出现问题

function up_move(index) {
  var frm = document.writeForm;
  var opts = frm["ans_list" + index].options
  for (var i = 0; i < opts.length; i++) {
    if (opts[i].selected && i > 0) {
      tmp = opts[i].cloneNode(true);
      opts[i].removeChild(opts[i].childNodes[0]);
      opts[i - 1].insertAdjacentElement("beforeBegin", tmp).selected = true;
    }
  }
  setting_val(index);
}

function down_move(index) {
  var frm = document.writeForm;
  var opts = frm["ans_list" + index].options
  for (var i = opts.length - 1; i >= 0; i--) {
    if (opts[i].selected && i < opts.length - 1) {
      tmp = opts[i].cloneNode(true);
      opts[i].removeChild(opts[i].childNodes[0]);
      opts[i].insertAdjacentElement("afterEnd", tmp).selected = true;
    }
  }

  setting_val(index);
}
<a href="#" onClick="javasript:up_move('1');" style="float:left"><span class="bt_test_admin bg_type_01">▲ Order</span></a>
<a href="#" onClick="javasript:down_move('2');" style="float:left"><span class="bt_test_admin bg_type_01">▼ Order</span></a>

这是控制台浏览器上的错误:

未捕获的类型错误:无法在“节点”上执行“removeChild”:参数 1 不是“节点”类型。
在 up_move (write_form.jsp:367)

如何解决这个错误?

【问题讨论】:

  • 我在 sn-p 中添加了您的代码,但它似乎会产生不同的错误,因为问题缺少很多相关的 HTML。您能否编辑您显示的代码,以便它显示您遇到的确切问题。
  • 好吧,当它需要一个节点时,您将 true 传递给 removeChild
  • Tks @Utkanos:你的意思是什么?我应该删除“真”吗?
  • removeChild() 期望一个节点作为它的唯一参数;您传递的是布尔值,而不是节点。所以,你用错了。

标签: javascript jquery html jquery-ui


【解决方案1】:

需要更正 removeChild 的语法。可以是这样的:

opts[i].removeChild(opts[i].childNodes[0]);

它将删除opts[i]的第一个子节点

【讨论】:

  • 嗨@Abhilasha:我已经更新了上面的源代码和结果,它可以对文本进行上下排序,但并不像预期的那样
  • 能否分享所需的HTML代码。例如“ans_list+{index}”的标签
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-26
  • 2022-11-21
  • 2019-12-11
  • 2023-03-04
相关资源
最近更新 更多