Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Набор элементов (https://javascript.ru/forum/misc/24860-nabor-ehlementov.html)

Артем125 17.01.2012 11:46

Набор элементов
 
Здравствуйте!


Сейчас мне приходится вешать событие на каждый input, а как можно повесить функцию на событие onСlick для всех Input которые находятся в div
function inform(){
alert(this)
}

<div>
<input onclick="inform()"  />
<input onclick="inform()" />
...
<div>

GuardCat 17.01.2012 12:08

Вот некроссбраузерный (от ie 8) пример на скорую руку:
function setEvents(selector, ev){
  var elements = document.querySelectorAll(selector), x;
  for (x = 0; x < elements.length; x++){
    elements[x].onclick = inform;
  }
}

Смотреть тут.

Артем125 17.01.2012 12:23

а кросбраузерно, пжст

GuardCat 17.01.2012 12:45

Вообще и на форуме и в статьях и в Интернете много информации по кроссбраузерной выборке элементов. JQuery опять же.
И, даже не читая, как минимум, костыль одноразовый можно написать. Вот такой, например.
function getAllInputsFromAllDivs(){
  var x, y, inputs, result = [], divs = document.getElementsByTagName("div");
  for (x = 0; x < divs.length; x++) {
    inputs = divs[x].getElementsByTagName("input");
    for (y = 0; y < inputs.length; y++) {
      result.push(inputs[y]);
    }
  }
  return result
}

Как его прикостылить.

9xakep 17.01.2012 19:20

А что так мешает сделать?
<div>
<input type='button' value='button1'>
<input type='button' value='button2'>
</div>
<script>
var div = document.getElementsByTagName('div')[0]
var inputs = div.getElementsByTagName('input')
for(i=0;i<inputs.length;i++)
inputs[i].onclick = function () { alert('work') }
</script>


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