массив и 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, время: 14:33. |