Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   отметить checkbox по title (https://javascript.ru/forum/dom-window/21236-otmetit-checkbox-po-title.html)

soniclord 02.09.2011 06:37

отметить checkbox по title
 
Здравствуйте!
имеется такая структура:

<ul>
   <li onClick="checkall(this.title)" title="1">Язык 1
      <ul>
         <li><input type="checkbox" name="box[]" title="1">позиция 1<li>
         <li><input type="checkbox" name="box[]" title="1">позиция 2<li>
         <li><input type="checkbox" name="box[]" title="1">позиция 3<li>
      </ul>
   </li>
   <li  onClick="checkall(this.title)" title="2">Язык 2
      <ul>
         <li><input type="checkbox" name="box[]" title="2">позиция 1<li>
         <li><input type="checkbox" name="box[]" title="2">позиция 2<li>
         <li><input type="checkbox" name="box[]" title="2">позиция 3<li>
      </ul>
   </li>   
</ul>


Как мне реализовать чтобы при нажатии на Язык № выделялись все чекбоксы этого раздела?

crayday 02.09.2011 07:41

function checkall(clicker) {
	var inputs = clicker.parentNode.getElementsByTagName('input');
	for(var i = 0; i < inputs.length; i++) inputs[i].checked = true;
}

onclick назначаем span элементу, а не li (иначе будет выделяться всё даже при клике по одной галочке), и в качестве аргумента подаём this:
<ul>
   <li title="1"><span onclick="checkall(this)">Язык 1</span>
      <ul>
         <li><input type="checkbox" name="box[]" title="1">позиция 1<li>
         <li><input type="checkbox" name="box[]" title="1">позиция 2<li>
         <li><input type="checkbox" name="box[]" title="1">позиция 3<li>
      </ul>
   </li>
   <li  title="2"><span onclick="checkall(this)">Язык 2<span>
      <ul>
         <li><input type="checkbox" name="box[]" title="2">позиция 1<li>
         <li><input type="checkbox" name="box[]" title="2">позиция 2<li>
         <li><input type="checkbox" name="box[]" title="2">позиция 3<li>
      </ul>
   </li>   
</ul>

soniclord 02.09.2011 08:49

crayday, благодарю, все работает!


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