Исполнение onclick события для нескольких элементов

253
26 февраля 2017, 07:21

Необходимо одним кликом заставить сработать событие onclick на нескольких элементах. Основная проблема в том, что использовать средства JS для имитации клика нельзя, это должен быть пользователь.

К примеру, необходимо чтобы сработало сразу четыре алерта с одного клика.

<p onclick='alert(1)'>text</p>
<p onclick='alert(2)'>text</p>
<p onclick='alert(3)'>text</p>
<p onclick='alert(4)'>text</p>

Возможно элементы должны иметь один класс или быть наложены друг на друга? Как такое реализовать?

Answer 1

Можно изощриться вот так (использовать всплытие события):

<p onclick='alert(1)'>
  text
  <span onclick='alert(2)'>
    text
    <span onclick='alert(3)'>
      text
      <span onclick='alert(4)'>text</span>
    </span>
  </span>
</p>

Но в здравом рассудке, так делать не стоит.

Answer 2

Вот как то так, только клинутый елемент будет 2 раза выдовать алерт, так как будет срабатывать первый onclick

let matches = document.body.querySelectorAll('p'); 
for(i=0; i < matches.length; i++) 
{ 
 matches[i].addEventListener('click', function(el){ 
 for(j=0;j < matches.length; j++) 
 { 
   matches[j].click(); 
 } 
 }) 
}
<p onclick='alert(1)'>text</p> 
<p onclick='alert(2)'>text</p> 
<p onclick='alert(3)'>text</p> 
<p onclick='alert(4)'>text</p>

Answer 3

Как же нельзя, если есть метод elem.click(). Главное, чтобы при клике не было всплывающих окон(alert() не считается). Ну а сразу по нескольким элементам тоже можно, только напишите класс какой-то. Сам код:

var all_elems = document.getElementsByClassName("your_class");
for(var i = 0;  i < all_elems.length; i++){
    all_elems[0].click();
}
READ ALSO
Как работать с сокетами в UWP (server/client)

Как работать с сокетами в UWP (server/client)

Как в UWP (universal windows platform) работать с сокетами? Есть документация Microsoft:

325
Перебрать несколько коллекций в одном foreach [требует правки]

Перебрать несколько коллекций в одном foreach [требует правки]

Не очень понятно, что ты хочешь перебирать и как, но вообще в C# есть такая вещь как LINQ, советую почитатьБудет что-то в духе:

212
Вызов асинхронных методов внутри цикла

Вызов асинхронных методов внутри цикла

Насколько я понимаю, вызов асинхронного метода внутри цикла с использованием ключевого слова await - совершенно бессмысленно, поскольку цикл...

250
Как правильно освободить Image [дубликат]

Как правильно освободить Image [дубликат]

На данный вопрос уже ответили:

208