Javascript select.getElementsByTagName,特定选项除外

Javascript select.getElementsByTagName,特定选项除外,javascript,Javascript,我有一个问题,我的随机选项选择器选择了我不想要的某个选项。我如何缓解这种情况 var select = document.getElementById('edit-categories'); var items = select.getElementsByTagName('option'); var index = Math.floor(Math.random() * items.length + 1); return select.selectedIndex = index; 我希望随机选取

我有一个问题,我的随机选项选择器选择了我不想要的某个
选项。我如何缓解这种情况

var select = document.getElementById('edit-categories');
var items = select.getElementsByTagName('option');
var index = Math.floor(Math.random() * items.length + 1);
return select.selectedIndex = index;
我希望随机选取器使用的
选项是:
value=“\u none”
与和一起使用:

var-select=document.querySelector('select');
var items=select.querySelectorAll('option:not([value=“\u none”]));
控制台日志(项目)

--
水
浪费

作为替代,您也可以使用Array.prototype.filter(因为它比
[非]
选择器容易得多):

var opts=[].filter.call(document.getElementById('edit-categories')。选项,函数(opt){return opt.value!='\u none'})
控制台日志(opts)

没有一个
福
酒吧

您可以在设置索引之前添加
while
循环:

var select=document.getElementById('edit-categories');
var items=select.getElementsByTagName('option');
var index=Math.floor(Math.random()*items.length);
while(items[index].value='\u none'){
index=Math.floor(Math.random()*items.length);
}
select.selectedIndex=索引

0
1.
2.
3.
没有一个
4.

您不应该链接到图片中的代码。使用select的选项集合更简单:
var items=select.options
;-)所以不要包含零…很酷的解决方案…你不经常看到人们使用
:not
选择器。这就是我要找的。非常感谢你。
var items = select.querySelectorAll('option:not([value="_none"])');