Javascript 因为只有奇数

Javascript 因为只有奇数,javascript,Javascript,所以我有一段代码,它从select(0-23)中删除选项,但它只删除0和奇数。剩下的选项是2、6、10、14、18、22。 目标是删除for中的所有选项 代码: var x=0; var select=document.getElementById(“小时”); 变量长度=select.options.length; 对于(x=0;x=null?有几种方法可以获得结果。但指出他的方法有什么问题是必要的。我们可以使用innerHtml或使用while循环或删除子项等一次性清除选项。但如果他需要根据

所以我有一段代码,它从select(0-23)中删除选项,但它只删除0和奇数。剩下的选项是2、6、10、14、18、22。 目标是删除for中的所有选项 代码:

var x=0;
var select=document.getElementById(“小时”);
变量长度=select.options.length;
对于(x=0;x
尝试反向循环

var select = document.getElementById("hour");
var length = select.options.length;
for (var x = length-1; x >= 0; x--) {
    select.options[x] = null;
};
您也可以使用
remove
方法,而不是将其设置为空值

select.remove(x);
代码的问题是,当您删除第0个索引选项时,第一个索引将出现在第0个索引处,从而导致下一次迭代删除第一个索引,而不是当前的第一个索引。我希望:

var select = document.getElementById("hour");
select.innerHTML = '';


如果在基本for循环中弄乱活动节点列表,索引计算会变得令人恼火,因为您更改了循环中选项的长度。因此,反向循环同样有效,因为索引对于前一个元素保持不变。

清空数组或类似结构的另一种方法是重复删除第一个元素,直到没有第一个元素:

while (select.options[0]) select.remove(0);

显示您的选择和选项html部分,以便更容易回答
document.getElementById(“hour”)。innerHTML=''
select.options是一个活动列表,因此当您将一个选项设置为null时,它将从列表中消失,因此列表将变短。所以x+1现在指的是刚才删除的元素中的两个元素,因为删除它会为下一个元素提供当前元素的索引。结果是您总是跳过一个选项。只需删除select的整个innerHTML。或者使用类似while lastchild的方法,删除lastchild。为此添加一个工作代码,这样可以帮助我们发现错误。使用
x--
like
select.options[x--]=null
。你能解释一下为什么反向循环可以解决这个问题吗?@3limin4t0r这样做了。为什么不像
select那样减少
x
的值。选项[x-->=null?有几种方法可以获得结果。但指出他的方法有什么问题是必要的。我们可以使用
innerHtml
或使用while循环或删除子项等一次性清除选项。但如果他需要根据将来的某些条件删除选项,该怎么办?
var select = document.getElementById("hour");
while ( select.lastChild ) {
  select.removeChild( select.lastChild );
}
while (select.options[0]) select.remove(0);