2014-04-02 57 views
1

我試圖讓此腳本計數達到指定的數字並返回到指定的數字,如下所示:19200,38400,57600,76800,96000,76800, 57600,38400,19200 - 重複。到目前爲止,這是我擁有的,但我似乎無法按照上面的順序進行倒計時,它又從19200年重新開始。在Javascript中按順序計算上下指定的數字

$(function() { 
var seconds = 19200; 
var timerId = setInterval(function() { 
    seconds = seconds + 19200; 
    $("#counter").text(seconds); 

    if (seconds > "76800") { 
     clearInterval(seconds); 
     seconds = seconds - "19200";  
    } 

}, 500); 
}); 

回答

2

一個小問題與邏輯,條件

if (seconds > "76800") { 

總是試圖保持上述76800.

秒而你想一個標誌跟蹤計數的方向。看看下面:

更新:

工作演示在

JSFiddle

$(function() { 
    var increment = 19200; 
    var seconds = increment; 
    var countUp = true; 
    var timerId = setInterval(function() { 
     $("#counter").text(seconds); 

     if (countUp) { 
      seconds += increment; 
     } else { 
      seconds -= increment; 
     } 

     if (countUp && seconds > increment*4) { 
      countUp = false; 
     } else if (!countUp && seconds <= increment) { 
      countUp = true; 
     } 

    }, 500); 
}); 
+0

哎呀我的壞,謝謝!但是,如何讓計數從0回到19200作爲最低數字? – scrltt

+0

更新了JSFiddle和上面的代碼,以減少硬編碼值並將較低的邊界設置爲19200而不是0。 – Kyo

0

檢查以下功能

$(function() { 
    var seconds = 19200; 
    action = 'add'; 
    var timerId = setInterval(function() { 

    $("#counter").text(seconds); 

    if (seconds == 96000) { 
     action = 'remove'; 
    } else if (seconds == 19200) { 
     action = 'add' 
    } 

    if (action == 'add') 
     seconds += 19200; 
    else if (action == 'remove') 
     seconds -= 19200; 

    }, 500); 
}); 
0

我覺得這是多了幾分優雅

var increment = 19200, 
    seconds = increment; 

var timer = setInterval(function() { 
    console.log(seconds); 
    seconds += increment; 
    if (seconds > 76800 || seconds < 19200) { 
    increment *= -1; 
    } 
}, 500); 

jsfiddle