2015-10-13 2 views
0

Даже если кнопка имеет «Стоп таймер», он запускает код в пределах «Запуск таймера» IF, внутри функции TimerOnOff():Если ... Else

document.getElementById('BtnTimerOnOff').textContent = "Stop timer" 



    <!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <script> 

     var milisec=0 
     var seconds=0 
     document.d.d2.value='0' 
     var onoff=0; 


     function display(){ 
      if (milisec>=9){ 
       milisec=0; 
       seconds+=1 
      } 
      else 
       milisec+=1 
      document.d.d2.value=seconds+"."+milisec 
      setTimeout("display()",100) 
     } 

     function TimerOnOff(){ 
      var a = document.getElementById('BtnTimerOnOff').textContent 

      //var b; 
      alert(document.getElementById('BtnTimerOnOff').textContent) 

      if (document.getElementById('BtnTimerOnOff').textContent = "Start timer") { 
       document.getElementById('BtnTimerOnOff').textContent = "Stop timer" 
       a = document.getElementById('BtnTimerOnOff').textContent 
       alert(document.getElementById('BtnTimerOnOff').textContent) 
       alert('aaa') 
       display() 
      } 
      else if (document.getElementById('BtnTimerOnOff').textContent = "Stop timer"){ 
        a = document.getElementById('BtnTimerOnOff').textContent 
        alert("Stop the timer") 
      } 
     } 
    </script> 
</head> 
<body> 
<table border="0"> 
    <tr> 
     <button type= "button" id="BtnTimerOnOff" onclick="TimerOnOff()">Start timer</button></tr> 
    <td align="center" ><font face="JuraLight" size="6"><strong>Online Time:</strong></font></td> 
    <td id="timer" align="center"><form name="d"> 
     <p><input type="text" size="8" name="d2"></p> 
    </form> 
    </td> 
    <td align="center"><font face="Arial" size="6"><strong>seconds!</strong></font></td> 
    </tr> 
</table> 

</body> 
</html> 

ответ

1

Probelm Вы не останавливая таймер. Когда вы вызываете display(), который будет работать бесконечно. Вам нужно использовать флаг или что-то в этом роде.

Я играл с вашим кодом немного и вышел с этим - http://jsbin.com/xusasatewi/1/edit?html,console,output

+0

Круто, спасибо, ребята! :) –

+0

не забывайте +1 :) –

+0

Я не могу, я должен получить 15 очков репутации первым! –

1

Один = знак используется для присвоения значения переменной. Вы хотите использовать == или === для сравнения/проверки значений.

1

, когда ваша оценка значения в отчете, если вам нужно == не =

0
<!DOCTYPE html> 

var milisec=0 
    var seconds=0 
    document.d.d2.value='0' 
    var onoff=0; 


    function display(){ 
     if (milisec>=9){ 
      milisec=0; 
      seconds+=1 
     } 
     else 
      milisec+=1 
     document.d.d2.value=seconds+"."+milisec 
     setTimeout("display()",100) 
    } 

    function TimerOnOff(){ 
     var a = document.getElementById('BtnTimerOnOff').textContent 

     //var b; 
     alert(document.getElementById('BtnTimerOnOff').textContent) 

     if (document.getElementById('BtnTimerOnOff').textContent === "Start timer") { 
      document.getElementById('BtnTimerOnOff').textContent = "Stop timer" 
      a = document.getElementById('BtnTimerOnOff').textContent 
      alert(document.getElementById('BtnTimerOnOff').textContent) 
      alert('aaa') 
      display() 
     } 
     else if (document.getElementById('BtnTimerOnOff').textContent === "Stop timer"){ 
       a = document.getElementById('BtnTimerOnOff').textContent 
       alert("Stop the timer") 
     } 
    } 
</script> 

Пуск таймера Время онлайн:

секунд!

1

При проверке равенства в if условиях, вы должны использовать двойной равно == или тройной равно ===.

ли это:

if (document.getElementById('BtnTimerOnOff').textContent == "Start timer") 

не это:

if (document.getElementById('BtnTimerOnOff').textContent = "Start timer") 
0

Прежде всего, вам нужно использовать == или === вместо = в если утверждение: if (document.getElementById('BtnTimerOnOff').textContent = "Start timer") { должно быть if (document.getElementById('BtnTimerOnOff').textContent == "Start timer") {

= является оператором присваивания, например Если вы запустите var x = 1;, тогда x будет иметь значение 1.

== - оператор сравнения, который проверяет, что значение чего-то равно значению чего-то другого. например if(x == 1) будет оцениваться до true и так будет if(x == true), потому что 1 будет оценивать до true и 0 оценить до false.

=== - еще один оператор сравнения, который проверяет, является ли значение чего-то равным значению, и является тем же самым типом, что и другое. напримерif(x === 1) будет оценивать, чтобы true однако, будет оценивать if(x === true) к false, потому что 1 (значение x) является integer и true является boolean.

Кроме того, вы должны сохранить тайм-аут в переменной: var timeout = setTimeout("display()",100);, так что вы можете очистить его, чтобы остановить таймер: clearTimeout(timeout);

+0

Спасибо, Джастин! –

+0

Добро пожаловать! Рад, что смог помочь. –

Смежные вопросы