使用JavaScript检查多选框中是否已存在选项

使用JavaScript检查多选框中是否已存在选项,javascript,Javascript,我的问题与此相同— 尽管我想知道如何使用JavaScript而不是jQuery来完成。 我尝试过使用indexOf,===等,但我不确定我的方法是否正确 附言:如果你把它标记为一个副本,一定要把我和一个有JavaScript答案的问题联系起来。多谢各位 此外,反对投票的理由也是受欢迎的 我的做法: var foldersList = document.getElementById("folders"); for(var i=0; i<foldersList.length; i++)

我的问题与此相同—

尽管我想知道如何使用JavaScript而不是jQuery来完成。 我尝试过使用indexOf,===等,但我不确定我的方法是否正确

附言:如果你把它标记为一个副本,一定要把我和一个有JavaScript答案的问题联系起来。多谢各位

此外,反对投票的理由也是受欢迎的

我的做法:

var foldersList = document.getElementById("folders");
    for(var i=0; i<foldersList.length; i++)
    {
       if(!(foldersList.options[i].value.indexOf("someValue") === -1))
       {
             //do something
       }
    }
您可以使用:

这与:

$("#yourSelect option[value='yourValue']").length > 0;

即使是最古老的浏览器也支持的简单方式:

function selectHasOption(select, value)
{
    for (var i = 0, len = select.options.length; i != len; ++i) {
        if (select.options[i].value == value) {
            return true;
        }
    }
    return false;
}
这是一个表达:

selectHasOption(document.getElementById('folders'), 'someValue')

你能展示你的方法,并说出你认为它不正确的原因吗?document.queryselector all'select option[value=something]'。长度>0?您能告诉我们您是如何尝试这样做的,并告诉我们什么不起作用吗?我在选择框中反复搜索值,这是正确的方法吗?似乎foldersList.length应该是foldersList.options.length。@ivarni Select元素确实有一个集合@jack Select元素确实有一个属性,即选项数,即Select的选项集合的长度。如果内存正常,则子代选择器在IE8中不起作用。不过,真的,我们该停止瞄准IE8了。@ivarni不是瞄准IE8,而是支持使用IE8的用户,当然,这大约是IE用户的1/4,这取决于你相信谁的统计数据-虽然target可能不是最好的选择,但我仍然认为我们需要尽快从IE8开始。是的,人们正在使用它,但我们的支持并不能帮助他们从中迁移。
selectHasOption(document.getElementById('folders'), 'someValue')
var yourSelect = document.getElementById("yourSelect");
for (i = 0; i < yourSelect.length; ++i) {
   if (yourSelect.options[i].value == "someValue") {
      alert("someValue is available");
   }
}