Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   массив и radio (https://javascript.ru/forum/jquery/77047-massiv-i-radio.html)

awinart 18.03.2019 20:56

массив и 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).

рони 18.03.2019 22:40

awinart,
подожду переводчика или решения ...

awinart 18.03.2019 22:48

Цитата:

Сообщение от рони (Сообщение 504955)
awinart,
подожду переводчика или решения ...

Сложно слишком объяснил? Речь про взаимосвязанные значения. Т.е. в массиве лежат значения последовательности связей, на основании которых хочется делать дальнейшие манипуляции... например подставлять класс.

MC-XOBAHCK 18.03.2019 23:28

awinart,
кусок вашего кода - это не многомерный массив, а объект у которого свойства являются массивами.
Многомерный массив - это массив массивов: [[], [], []].

Цитата:

Сообщение от awinart (Сообщение 504957)
Сложно слишком объяснил?

У вас в коде одни значения, а в описании проблемы - другие. Как тут можно что то понять?
И HTML добавьте, что вы хотите. Понятно только то что у вас простая задача, но не понятно что вы хотите.

рони 19.03.2019 00:52

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.