одна кнопка с двумя функциями - PullRequest
0 голосов
/ 09 февраля 2012

Когда я нажимаю кнопку onces, я хочу начать отсчет, а когда я нажимаю снова, чтобы остановить подсчет. Я знаю, что для работы двух функций с одним событием onclick кнопки, он отделен от ";". Любое предложение? Этот код хорошо работает с двумя кнопками для каждой функции. Заранее спасибо.

<form>
<input type="button" value="Start count!" onclick="doTimer();stopCount();" />
</form>

код JavaScript:

var c=0;
var t;
var timer_is_on=0;

function timedCount()
{
document.getElementById('txt').value=c;
c=c+1;
t=setTimeout("timedCount()",1000);
}

function doTimer()
{
if (!timer_is_on)
{
timer_is_on=1;
timedCount();
}
}

function stopCount()
{
clearTimeout(t);
timer_is_on=0;
}

Ответы [ 3 ]

3 голосов
/ 09 февраля 2012

Как насчет этого:

onclick="handleClick();"

И ваш JS:

function handleClick() {
  if (timer_is_on) {
    timer_is_on = false;
    clearTimeout(t);
  } else {
    timer_is_on = true;
    timedCount();
  }
}
1 голос
/ 09 февраля 2012

Это вызовет один сразу за другим, что не имеет смысла.

Используйте одну функцию, проверьте значение флага и выполните соответствующее действие.

0 голосов
/ 09 февраля 2012

Вот мое непроверенное решение с несколькими полезными советами.

Во-первых, я думаю, что вы, вероятно, можете избавиться от тегов <form> и </form>.

Во-вторых, вам может быть полезно дать вашим переменным значимые имена, а не просто c или t

В-третьих, таймер изменения включен в логическое значение: var timer_is_on = false;

Изменение курсоранажмите на эту кнопку: <input type="button" value="Start count!" onclick="doTimer();" />

Пятое замените ваш код следующим:

function doTimer(){

  if( timer_is_on ){

    // Code to start the timer
    // and any other code you want

    timer_is_on = false;

  }else{

    // Code to stop the timer
    // and any other code you want

    timer_is_on = true;

  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...