массив и radio
Добрый день!
Попытки поиска ни к чему не привели, поэтому обращаюсь к вам! Есть многомерный массив и несколько групп radio input. В каждом input присвоено значение value = id (цифры которых, по порядку групп инпутов находятся в массиве). Задача такова, чтобы при нажатии\изменении инпута = подставлялся класс NO к тем инпутам value которых находятся в массиве.
var attr_no = {
set0: ["80","82","85"], set1: ["80","80","80"], set2: ["78","82","87"], set3: ["79","82","87"]
}
К примеру, у нас 3 группы инпутов по 3 штуки в строку с значениями [1(value=80),1(value=81),1(value=71)] [2(value=80),2(value=82),2(value=71)] [3(value=80),3(value=85),3(value=71)] если выбран параметр 1(value=80) - как сделать так, чтобы input 2(value=82) и 3(value=85) - присвоить класс NO (согласно набору set0) ? А если мы переставили значение 2-го инпута на 2(value=80), в соответствии с набором set1 присвоить класс инпуту 3(value=80). |
awinart,
подожду переводчика или решения ... |
Цитата:
|
awinart,
кусок вашего кода - это не многомерный массив, а объект у которого свойства являются массивами. Многомерный массив - это массив массивов: [[], [], []]. Цитата:
И HTML добавьте, что вы хотите. Понятно только то что у вас простая задача, но не понятно что вы хотите. |
awinart,
... :)
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.NO{
background-color: #FF0000;
color: #FFFFFF;}
</style>
<script>
var attr_no = {
set0: ["80", "82", "85"],
set1: ["80", "80", "80"],
set2: ["78", "82", "87"],
set3: ["79", "82", "87"]
};
var a = [
["80", "81", "71"],
["80", "82", "71"],
["80", "85", "71"]
];
function fn() {
return Object.keys(attr_no).filter(function(set) {
return attr_no[set].every(function(v, i) {
var el = document.querySelector("[name=num" + i + "]:checked");
var ar = el ? [el.value] : a[i]
return ar.includes(v)
})
})
}
document.addEventListener("click", event => {
var a = fn();
[...document.querySelectorAll("label")].forEach(el => el.classList.remove("NO"));
if (a.length) attr_no[a[0]].forEach((v, i) => document.querySelector("[name=num" + i + "][value='" + v + "']").parentNode.classList.add("NO"));
});
</script>
</head>
<body>
<label for=""><input type="radio" value="80" name="num0">80</label>
<label for=""><input type="radio" value="81" name="num0">81</label>
<label for=""><input type="radio" value="71" name="num0">71</label>
<br>
<label for=""><input type="radio" value="80" name="num1">80</label>
<label for=""><input type="radio" value="82" name="num1">82</label>
<label for=""><input type="radio" value="71" name="num1">71</label>
<br>
<label for=""><input type="radio" value="80" name="num2">80</label>
<label for=""><input type="radio" value="85" name="num2">85</label>
<label for=""><input type="radio" value="71" name="num2">71</label>
<br>
</body>
</html>
|
| Часовой пояс GMT +3, время: 02:18. |