2016-02-20 69 views
0

我要讓這可以通過+或設置一個簡單的倒數定時器定時 - div的,也可以通過點擊itself.My問題被停止,在運行時,它會停止,然後運行它顯示NAN爲第一個數字。我想這是因爲setTimer函數,但我不知道如何解決這個問題。停止並運行在JavaScript

<div class='session'>2</div> 
<div id='increase' onclick='decrease()'>-</div> 
<div id='increase' onclick='increase()'>+</div> 
<div class='session' onclick='setSession();general()'>2</div> 
var x=document.getElementsByClassName('session'); 
var y=document.getElementById('break'); 
var seconds=60; 


function increase(){ 
    for (var i=0;i<x.length;i++){ 
    x[i].innerHTML++; 
} 
} 

function decrease(){ 
    for (var i=0;i<x.length;i++){ 
    if(x[i].innerHTML>0){ 
     x[i].innerHTML--; 
    } 
    } 
} 

var session; 
function setSession(){ 
    session = x[1].innerHTML - 1; 
} 

function timer() { 
    if (seconds > 0) { 
    seconds--; 
    if (seconds == 0 && session > 0) { 
      session--; 
      seconds = 60; 
     } 
    } 
    x[1].innerHTML = session + ':' + seconds; 
    } 

function stoptimer(){ 
    clearInterval(t); 
} 

    var t; 
var on=true; 
function general(){ 
    if(on){ 
     on=false; 
     t=setInterval(timer,100); 
    }else{ 
    on=true; 
    stoptimer(); 
    } 
} 

回答

0

它看起來像你的setSession()方法就是NaN的錯誤出現。每當你點擊計時器停止它,它從

<div class='session' onclick='setSession();general()'>2</div> 

的innerHTML減去1,如果計時器已經啓動,innerHTML的是形式

number:number 

文本 ...這是導致錯誤的原因。試圖從這樣的東西中減去1會導致不理想的結果。

什麼是會話數字的目的是什麼?你是否試圖使用你的會話變量作爲你的十位的佔位符,或者類似的東西?爲什麼不把它全部保存爲一個數字,並在更新html時轉換爲適當的字符串?

+0

好吧,不使用SetTimer函數的時候,我的定時器不從新啓動時間,但是從給定的時間開始,在這種情況下,從2 – Armine

+0

我建議用數字開頭,而不是你的會話變量設置爲HTML 。這將有助於防止JavaScript在字符串和數字之間進行的任何類型轉換 –

+0

下面是您可以嘗試的一些修補程序示例。它並不完美,但它是一個開始:https://plnkr.co/edit/eRYYrOPG20odnJ31v600?p=preview –