Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.03.2019, 19:56
Новичок на форуме
Отправить личное сообщение для awinart Посмотреть профиль Найти все сообщения от awinart
 
Регистрация: 18.03.2019
Сообщений: 2

массив и 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).
Ответить с цитированием
  #2 (permalink)  
Старый 18.03.2019, 21:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 26,662

awinart,
подожду переводчика или решения ...
Ответить с цитированием
  #3 (permalink)  
Старый 18.03.2019, 21:48
Новичок на форуме
Отправить личное сообщение для awinart Посмотреть профиль Найти все сообщения от awinart
 
Регистрация: 18.03.2019
Сообщений: 2

Сообщение от рони Посмотреть сообщение
awinart,
подожду переводчика или решения ...
Сложно слишком объяснил? Речь про взаимосвязанные значения. Т.е. в массиве лежат значения последовательности связей, на основании которых хочется делать дальнейшие манипуляции... например подставлять класс.
Ответить с цитированием
  #4 (permalink)  
Старый 18.03.2019, 22:28
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 413

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

Сообщение от awinart Посмотреть сообщение
Сложно слишком объяснил?
У вас в коде одни значения, а в описании проблемы - другие. Как тут можно что то понять?
И HTML добавьте, что вы хотите. Понятно только то что у вас простая задача, но не понятно что вы хотите.
Ответить с цитированием
  #5 (permalink)  
Старый 18.03.2019, 23:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 26,662

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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовать массив объектов в массив массивов sovsem-nub Events/DOM/Window 4 12.05.2018 21:56
Добавление объекта в массив в цикле Dark19 Элементы интерфейса 3 11.12.2016 22:11
Чтение данных из файла в массив TheSingleElk Общие вопросы Javascript 2 16.06.2016 01:09
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 18:14
выполнение ф-ии при изменении состояния radio MaxB Events/DOM/Window 5 24.06.2009 13:24