Как сделать срабатывание скрипта через раз при нажатии на кнопку

Как сделать, что-бы при нажатии на кнопку скрипт срабатывал через раз?

document.getElementById('yourId').onclick = function() {
    alert('Неверный код');
}
<button id="yourId"><span>Подтвердить код</span></button>


Ответы (1 шт):

Автор решения: Seyves

Можно сделать подобное просто через внешнюю переменную:

let oddFlag = true

function oddHandler(){
  if (oddFlag) alert('Неверный код')
  oddFlag = !oddFlag
}

document.getElementById('yourId').onclick = oddHandler
<button id="yourId"><span>Подтвердить код</span></button>

Но вообще, есть решение поэлегантнее - через замыкание. Но, в таком случае нужно присвоить ВЫЗОВ функции:

function createOddHandler(){
  let oddFlag = true
    
  return () => {
    if (oddFlag) alert('Неверный код')
    oddFlag = !oddFlag
  }
}

document.getElementById('yourId').onclick = createOddHandler()
<button id="yourId"><span>Подтвердить код</span></button>

→ Ссылка