2014-09-03 87 views
0

嗨我是新的JS和jQuery,我有一个简单的倒数计时器的问题。jquery倒计时定时器NaN

当我输入一些值到输入它翻译成NaN(而不是数字)在我的倒数计时器。

这里是我的代码:

$(function() { 
    var $input = $('#time'), 
     seconds = parseInt($input.val()), 
     $start = $('button'); 

    $start.on('click', function() { 
     var interval = setInterval(function() { 

      switch (seconds) { 
       case 0: 
        clearInterval(interval); 
        console.log("Time's UP!"); 
        break; 
       case 1: 
        console.log("Do końca pozostała " + seconds + " sekunda"); /*polish gramaticall variation*/ 
        break; 
       case 4: 
       case 3: 
       case 2: 
        console.log("Do końca pozostało " + seconds + " sekundy"); /*polish gramaticall variation*/ 
        break; 
       default: 
        console.log("Do końca pozostało " + seconds + " sekund"); /*polish gramaticall variation*/ 
      } 
      seconds = seconds - 1; 
     }, 1000); 
    }); 
}); 

HTML:

<label for="time">Set time in seconds </label> 
<input type="text" id="time"> 
<button>Start</button> 
+1

'秒= parseInt函数($ input.val())'的秒值将是设置的值在页面加载时,它在任何情况下都不会更新。所以它会永远是NaN。 – 2014-09-03 07:22:02

+0

所以用'$ input.val()'替换'seconds'在click事件函数中,这可以解决你的问题 – 2014-09-03 07:23:49

+0

NaN意味着不是一个你不知道的数字。在未来的斗争中可以帮助检测原因 – 2014-09-03 08:00:12

回答

1

你只document.ready分配的seconds的值,使之永远只能有""其初始值 - 这对解析NaN。移动它你.click处理器内部,使得秒每个按钮上点击更新:

var seconds = 0; 
$start.on('click', function(){ 
    seconds = parseInt($input.val(), 10); // Always pass a radix to parseInt 
    .... 
}); 

jsFiddle

+1

这是一个非常重要的线索,现在帮助thx一切都很好:-) – kuba0506 2014-09-03 07:28:37