Как сделать так, чтобы onclick срабатывало только 1 раз?
Надо сделать защиту от
Читал stackoverflow, но одобренных решений не нашел. |
Всем спасибо за внимание, нашел! :)
if (!clicked) { // Set clicked to true clicked = true; } Там ещё были варианты, но этого хватило. :) |
Но идеологически это не правильный вариант. Потому что бесполезное событие продолжает висеть.
Правильно делать так: element.addEventElistener('click', function() { // ... }, { once: true }) |
Цитата:
element.addEventListener('click', function() { } , {once : true}); https://learn.javascript.ru/introduction-browser-events |
Цитата:
Вам, экспертам javascript - хорошо, а мне далеко не всё понятно в ваших примерах. При этом в "if" я могу засунуть изменение цвета "псевдокнопки" (тег span), чтобы визуально было понятно, что она уже нажата. Сейчас мой код выглядит так: <script> var clicked = false; function example1() { if (!clicked) { // Set clicked to true clicked = true; Здесь выполняем необходимые действия. } } </script> Где должна быть указанная Вами и Вашим коллегой строка? |
Цитата:
Цитата:
Т.е. использовать глобальную переменную для такого дела вообще не стоит. :no: |
Цитата:
|
Как вариант...
<button id='element'>Тест</button> <script> element.addEventListener('click', function() { alert('Меняем') element.addEventListener('click', function() { alert('Нет') }); } , {once : true}); </script> |
Цитата:
|
Все работает со span
<span id='element'>Тест</span> <script> element.addEventListener('click', function() { alert('Меняем') element.addEventListener('click', function() { alert('Нет') }); } , {once : true}); </script> |
Часовой пояс GMT +3, время: 21:11. |