【发布时间】:2020-08-06 17:30:21
【问题描述】:
在这篇文章的帮助下,以下是无线电输入的验证脚本:Validating Multiple Radio Button Groups in Vanilla JS
我现在需要在单选输入的 parentNode 被切片后添加一个类。这可能吗?下面的代码在这里工作:https://jsfiddle.net/arkjoseph/aw0kvfm5/49/ 但如果它没有验证,它需要一个错误类。有没有办法绕过切片数组或者我需要执行另一个循环?
编辑我原来的问题: 我怎样才能只访问带有 hasUnanswered 的元素,而不是每个可用的收音机。
给出这个代码:
function submit(event) {
const radio_htm = document.querySelectorAll('input[type=radio]');
const radios_array = Array.prototype.slice.call(radio_htm);
// Reduce to get an array of radio button sets
const questions = Object.values(radios_array.reduce((result, el) => {
return Object.assign(result, {[el.name]: (result[el.name] || []).concat(el)});
}, {}));
// Loop through each question, looking for any that aren't answered.
const hasUnanswered = questions.some(question => {
!question.some(el => {
return el.checked;
})
});
if (hasUnanswered) {
radio_not_pass = false;
// Retrieve DOM element from sliced array - radios_array and modify dom.
// Suggestion works here.
// What about accessing only radios that = hasUnanswered
radios.forEach(radio=>radio.parentNode.classList.add('error'))
} else {
radio_not_pass = true;
}
if (!radio_not_pass) {
event.preventDefault();
}
【问题讨论】:
-
使用
.slice有什么问题? -
@hev1 - 我对如何检索切片的 html 元素的切片不够熟悉。能详细点吗?
-
检索是什么意思?只需访问数组中的索引即可获取元素。
-
@hev1 - 对不起,但我不确定我是否理解你的建议。 “index 方法返回可以在数组中找到给定元素的第一个索引,如果不存在,则返回 -1。” - 我不确定这对我有什么帮助,因为我喜欢找到'hasUnanswered'的父节点
-
radios_array.forEach(radio=>radio.parentNode.classList.add('my-class'))
标签: javascript dom slice