javascript - 如何使用 vanilla JS 检查选择框中是否存在值?
问题描述
我想创建一个接受其参数的函数,该函数check
将遍历选择框选项和值,并检查该值是否存在。我让它工作(有点)但它只检查第一个选项。如果您运行checkOption('red)
,您会收到选项存在的警报。但是,如果您运行checkOption('green')
,则不会发生任何事情。
我在这里做一些简单的事情,但我无法弄清楚。感谢您的任何帮助。
工作代码笔:
JavaScript:
let selectBox = document.querySelector("select");
let options = selectBox.querySelectorAll("option");
function checkOption(check) {
options.forEach((o) => {
if (o.value === check) {
return true; // returns undefined either way.
}
});
}
}
编辑:我现在可以console.log()
打印到控制台,但我试图返回True
or False
。我将如何修改上述函数以返回True
或False
?到目前为止,这只返回undefined
.
解决方案
您需要options
在函数中循环。您还可以通过forEach
在集合上使用来缩短:
function checkOption(check) {
options.forEach( o => {
if( o.value === check) {
alert(`${check} is available`);
}
}
}
filter()
您还可以通过使用数组函数来压缩更多。您只需要将选项NodeList
视为一个数组,但首先将其粘贴到Array.from()
方法中:
function checkOption(check) {
if( Array.from(options).filter( o => o.value === check ).length )
alert(`${check} is available`);
}
甚至更短,让函数返回 true 或 false 以指示给定选项值的存在。
function checkOption(check) {
return Array.from(options).filter( o => o.value === check ).length > 0;
}
推荐阅读
- android - 开始编程:如何将 ArrayAdapter 传递给 RecyclerView?
- javascript - 如何将js对象保存为JSON格式
- mkdocs - MkDocs RuntimeError:mkdocs 服务上的 StopIteration
- python - 如何尽可能快地加载大型存储的 pandas 数据帧?
- javascript - 已声明 Javascript 标识符
- r - 从 `data.table` 调用 `fwrite` 函数时内存泄漏
- python - 不使用 Mask RCNN 提取汽车图像
- laravel - 图像源不可读 - laravel
- sql - 如何比较两个表,以便计算两个时间段之间的增长率?
- html - 如何在网格项中使用水平滚动容器?