【问题标题】:Why doesn't this remove all of the items from the <select> element?为什么不从 <select> 元素中删除所有项目?
【发布时间】:2016-03-23 02:29:16
【问题描述】:

我有一个函数应该在onfocus 事件中从&lt;select&gt; 中删除所有子元素。 (这很快就会用来自 AJAX 调用的值填充&lt;select&gt;)由于某种原因,它只在第一次调用它时删除一个元素,然后在所有后续调用中都不做任何事情。有没有人知道为什么会发生这种情况?

JS代码:

function handle(e) {
  for(var i = 0; i < e.children.length - 1; i++) {
    e.removeChild(e.children[i]);
  }
}

【问题讨论】:

  • 如果您删除 child[0],则 child[1] 立即变为 child[0]。使用 jQuery empty() 函数。
  • 哦!!!!!!,所以我应该以相反的顺序删除它们。 (捂脸)
  • 要删除选项,只需设置select.options.length = 0while (select.firstChild) select.removeChild(select.firstChild) 或...哦,对于任何具有多个子元素的元素都是一样的。

标签: javascript dom-events


【解决方案1】:

我猜handle() 是您的onfocus 事件处理程序。在这种情况下,e 是您的事件对象,并且没有任何 children 属性

为什么不直接使用select.innerHTML = ""

【讨论】:

  • 哇(再次捂脸)(再次捂脸)(Sokka-Face 解锁)
【解决方案2】:

所以答案只是以相反的顺序删除它们,以避免索引系统的影响与 VB.NET 列表类非常相似。 (也就是说,每次进行更改时它都会自我重组。

【讨论】:

    猜你喜欢
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 2021-11-28
    相关资源
    最近更新 更多