提问人:Mat 提问时间:12/8/2021 更新时间:12/8/2021 访问量:93
复选框值未识别
checkbox value unidentified
问:
嗨,我是 Web 开发的新手,从事简单的项目,如果有人可以提供帮助,我会遇到一个问题。我有 3 个复选框,用户可以检查他们最喜欢做的事情。完成问题后,我正在尝试记录所选框的值,但是如果有人可以帮助我表示感谢,我会得到无法识别的结果。代码如下: html格式:
What is your favorite thing to do:
<p id = "favoriteThings">
<input type="checkbox" name="TV" value=1>Watch TV
<input type="checkbox" name="Books" value=2>Read Books
<input type="checkbox" name="work" value=3>Work
</p>
JS:
var favoriteThings = document.getElementById("favoriteThings");
console.log("favorite things: " + favoriteThings.value);
我假设问题是段落标签是 ID,但有人可以给我解决这个问题吗?因为我不想给每个复选框提供与我听到的不良做法相同的 ID。 提前致谢。
答:
0赞
Roko C. Buljan
12/8/2021
#1
- 当您要对复选框(或单选按钮)输入进行分组时,请对输入组使用相同的方法
name
- 使用不同的
value
- 使用 querySelectorAll() 通过属性选择器获取所需的元素
"[]"
- 使用 nodeList.forEach() 迭代元素
- 使用 addEventListener() 附加一个 Event,在您的例子中:
"input"
const ELs_favorite = document.querySelectorAll("[name=favorite]");
const get_favorite = () => {
const checked_values = [...ELs_favorite].reduce((arr, EL) => {
if (EL.checked) arr.push(EL.value);
return arr;
}, []);
console.log(checked_values);
};
ELs_favorite.forEach(EL => {
EL.addEventListener("input", get_favorite);
});
What is your favorite thing to do:
<p>
<label><input type="checkbox" name="favorite" value="tv">Watch TV</label>
<label><input type="checkbox" name="favorite" value="books">Read Books</label>
<label><input type="checkbox" name="favorite" value="work">Work</label>
</p>
在上面的示例中,Array.reduce() 用于仅将输入元素的 s 收集到 Array 中。value
checked
-1赞
user16789193
12/8/2021
#2
您可以为每个复选框提供相同的 ID(没有问题)。
溶液:
<p id = "favoriteThings">
<input type="checkbox" name="favoriteThings" value="TV" or "1" onclick="MyNameFunction()">Watch TV
<input type="checkbox" name="favoriteThings" value="Read Books" or "2" onclick="MyNameFunction()">Read Books
<input type="checkbox" name="favoriteThings" value="Work" or "3" onclick="MyNameFunction()">Work
</p>
JS的
var choices = [];
var els = document.getElementsByName('favoriteThings');
console.log("Favourite things: ");
for (var i=0;i<els.length;i++){
if ( els[i].checked ) {
console.log(els[i].value);
}
评论
0赞
Roko C. Buljan
12/8/2021
停止使用不安全的内联属性,就像你希望不要使用内联属性一样。JS,和CSS一样,应该只在一个地方,那就是在它们各自的标签或文件中。on*
style
0赞
user16789193
12/8/2021
我知道。但我之所以这么说,是因为在这种情况下很清楚什么是意思!
下一个:模态不会消失
评论