Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как отметить оба чек-бокса при нажатии на 1? (https://javascript.ru/forum/misc/73156-kak-otmetit-oba-chek-boksa-pri-nazhatii-na-1-a.html)

angel026 26.03.2018 00:34

Как отметить оба чек-бокса при нажатии на 1?
 
Я своим скудным познанием JS смог только добиться выделении всех дочерних чек-боксов при нажатии на главный.
Прошу знающих помощи, как сделать чтобы при нажатии на Главный чек-бокс "checkboxes" выделялся только тот что находится с ним рядом в массиве "cpu_url", а не все в массиве?
Заранее благодарю за ответ!
Вот кусок кода:
var checkboxes = cpu.getElementsByClassName("choose_check"); 
var cpu_url = cpu.getElementsByClassName("choose_check_url"); 
var checkboxesChecked = [];   
var cc_cpu_url = []; 
  
        for (var index = 0; index < checkboxes.length; index++) {
            if (checkboxes[index].checked) {
            checkboxesChecked.push(slovo_cpu + modal_all + checkboxes[index].value + "<br />"); // положим в массив выбранный
            }
			
		for (var index_cpu_url = 0; index_cpu_url < cpu_url.length; index_cpu_url++) {
            if (checkboxes[index].checked) {
                cpu_url[index_cpu_url].checked = true;
            }
            if (cpu_url[index_cpu_url].checked) {
            cc_cpu_url.push(cpu_url[index_cpu_url].value); // положим в массив выбранный
            }
        }
        }
        
    document.getElementById('cpu').innerHTML = checkboxesChecked.join(' '); //рабочий вариант
    document.querySelector('iframe[class="frame-prod-cpu"]').setAttribute('src', cc_cpu_url);

код php массива :

echo '<td class="cell_choose_check" id="cell_cc_id_'.$i.'">';
echo '<label><input class="choose_check" id="cc_'.$i.'" name="check[]" type="checkbox" 
value=" '.$product['child']['product_sku'].' '.$product['child']['product_name'].'  '.$product['prices']['basePrice'].' 
                            '.$currency->getSymbol().'
                            "
onchange="getCheckedCheckBoxes()">';    
echo '<input class="choose_check_url" id="cc_url_'.$i.'" name="check[]" value="'.$view_produt_detal.'" type="checkbox"></label>';
 echo '</td>';


Задача, при событии onchange получить значение value 1-го чек-бокса и передать в определенное место в html документе.
При клике поставить checked во 2-й чек-бокс, для передачи ссылки в блок iframe. При ручном клике на оба чек-бокса все работает, при коде что выше работает только выделение всех 2-х чек-боксов и передача последней ччылки из массива.
Я пытаюсь сделать так, что бы при клике на 1-й чек-бокс 2-й тоже бы выделялся.

рони 26.03.2018 00:54

... подожду телепата или минимального макета с описанием

angel026 26.03.2018 01:18

Цитата:

Сообщение от рони (Сообщение 481416)
... подожду телепата или минимального макета с описанием

Прошу прощения, если чего то не указал...
что именно нужно еще указть
Заранее благодарю

рони 26.03.2018 01:34

angel026,
не понимаю что вы хотите сделать, возможно кто-то другой вам поможет.

angel026 26.03.2018 01:44

Цитата:

Сообщение от рони (Сообщение 481419)
angel026,
не понимаю что вы хотите сделать, возможно кто-то другой вам поможет.

добавил свои "хотелки", вот ссылка на сайт
https://makcon.ru/catalog/create-pc
нажмите на Иконку выбора процессоров, Вы увидите таблицу, в конце строки два чек бокса

рони 26.03.2018 02:04

angel026,
насколько я вас понял ...
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">

  <script>
     window.addEventListener('DOMContentLoaded', function() {
       [].forEach.call(document.querySelectorAll('.choose_check'), function(item) {
               item.addEventListener('change', function() {
                   var parent = item.parentNode;
                   var url = parent.querySelector('.choose_check_url')
                   url.checked = item.checked
               });
           });
         });
  </script>
</head>

<body>
<label><input class="choose_check" id="cc_6" name="check[]" value="
                            cpu-test-22
                            CPU AMD-22
                            9002
                            ₽
                            " onchange="getCheckedCheckBoxes()" type="checkbox"><input class="choose_check_url" id="cc_url_6" name="check[]" value="'.index.php?option=com_virtuemart&amp;view=productdetails&amp;virtuemart_product_id=13 &amp;tmpl=component'" type="checkbox"></label>

<br>
<label><input class="choose_check" id="cc_6" name="check[]" value="
                            cpu-test-22
                            CPU AMD-22
                            9002
                            ₽
                            " onchange="getCheckedCheckBoxes()" type="checkbox"><input class="choose_check_url" id="cc_url_6" name="check[]" value="'.index.php?option=com_virtuemart&amp;view=productdetails&amp;virtuemart_product_id=13 &amp;tmpl=component'" type="checkbox"></label>
<br>
<label><input class="choose_check" id="cc_6" name="check[]" value="
                            cpu-test-22
                            CPU AMD-22
                            9002
                            ₽
                            " onchange="getCheckedCheckBoxes()" type="checkbox"><input class="choose_check_url" id="cc_url_6" name="check[]" value="'.index.php?option=com_virtuemart&amp;view=productdetails&amp;virtuemart_product_id=13 &amp;tmpl=component'" type="checkbox"></label></body>
</html>

angel026 26.03.2018 18:15

Спасибо работает )))
Только немного иначе желаемого результата.
Если вставить Вашу функцию в файл JS документа где работает функция "getCheckedCheckBoxes()" то ничего не происходит, а если вставить в корень php документа, все работает.
Придется дальше "копать" (((
Вам огромное СПАСИБО за помощь!

рони 26.03.2018 19:07

angel026,
я не использовал getCheckedCheckBoxes, и не знаю зачем она у вас.

angel026 26.03.2018 19:41

Цитата:

Сообщение от рони (Сообщение 481486)
angel026,
я не использовал getCheckedCheckBoxes, и не знаю зачем она у вас.

Это основная функция, которая берет значения value этих чекбоксов и динамически передает из JS в php

рони 26.03.2018 19:49

angel026,
ок, всё что мог выше :)


Часовой пояс GMT +3, время: 03:39.