@marq

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

как сделать, что бы при нажатии на кнопку вызывалась первая функция, а при втором нажатии вторая функция?
  • Вопрос задан
  • 510 просмотров
Пригласить эксперта
Ответы на вопрос 4
@Mysianio
вайти в айти
isFunc1 = true;
let doSomething = () =>{
   if(isFunc1){
      function1();
      isFunc1 = false;
   } else {
      function2();
      isFunc1 = true;
   }
}


P.S. еще проще
isFunc1 = true;
let doSomething = () =>{
  isFunc1? function1() : function2();
}

и в самих функциях переопределять isFunc1
Ответ написан
Комментировать
var функция1 = function()
{
this.onclick = функция2
}

кнопка.onclick = функция1
Ответ написан
Комментировать
Seasle
@Seasle Куратор тега JavaScript
А можно использовать генератор
const createCycle = (...callbacks) => {
	const generator = (function* () {
		let index = 0;

		while (true) {
			yield callbacks[index++];

			index %= callbacks.length;
		}
	})();

	return generator;
};

const cycledCallbacks = createCycle(
	(name) => console.log(`Hello, ${name}`),
	(name) => console.log(`Bye, ${name}`)
);

const button = document.querySelector('button');

button.addEventListener('click', event => {
	event.preventDefault();

	const { value: callback } = cycledCallbacks.next();

	callback('John');
});
Ответ написан
Комментировать
@marq Автор вопроса
Сделал так
<input type="submit" class="btn btn-sm btn-info"  name="btn" onclick=" alf(); return num(this);"/>

func1=true;
func2=false;

function alf(){
   if(func1==true){
//что то есть
}

func2=true;
}



 function num(){
    if(func2==true){
//что то есть
}
func1=false;
}


Меняет, но криво, как будто вызываются сразу две функции, меняя друг друга
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы