2013-03-05 127 views
0

这是一个新问题。如果没有输入任何内容或文本,我想让我的Nan说“这不是一个数字”。我知道物理代码,但我不知道该把它放在哪里,或者我必须做出功能。我曾经说过,要么循环播放,要么说先输入了什么,然后“这不是一个数字”或“这不是一个数字”,那么NaN或根本不起作用。我在哪里放置NaN代码?

javacript: 
window.onload = function(){ 

var myDiv = document.getElementById("wrapper"); 
wrapper.setAttribute("align","center"); 
var startButton = document.getElementById("start"); 
var pauseButton = document.getElementById("pause"); 
var secondsBlock = document.getElementById("seconds"); 
var timer = document.getElementById("timer"); 
var newTime = document.createElement("h1"); 

    newTime.innerHTML = secondsBlock.value; 
    timer.appendChild(newTime); 

    //setTimeout(function countdown() { 
    var numbers = (newTime.innerHTML); 
    newTime.innerHTML = numbers; 

var newNumber; 

function countdown(count){ 

    newNumber =secondsBlock.value; 
    var numbers = (newNumber); 
    newTime.innerHTML = numbers; 

    stopper = setInterval(reduceAndShow, 1000); 

    if (numbers <10){ 
     newTime.style.color = "red"; 
     newTime.innerHTML = "0" + numbers; 
    }; 

}; 

function reduceAndShow(){ 
    newNumber--; 
    var numbers = (newNumber); 
    newTime.innerHTML = numbers; 

    stopCountdown(); 

    if (newNumber <10){ 
     newTime.style.color = "red"; 
     newTime.innerHTML= "0" + newNumber; 
    }; 


}; 

function stopCountdown(){ 
    if(newNumber <= 0){ 
    clearInterval(stopper); 
    }; 
}; 

startButton.onclick = function(){ 
    countdown(); 
}; 

function pauseBut(){ 
    clearInterval(stopper); 
}; 

pauseButton.onclick =function(){ 
    pauseBut() 
    }; 

html: 
<div id="wrapper"> 
Seconds: <input type="text" name= "seconds" id="seconds"> <input type="button"  
value="Start" id="start"> <input type="button" value="Pause" id="pause"> 

<div id="extraText"></div> 

<div id="timer"></div> 
</div> 
+0

你能后的代码的其余部分,甚至更好,一个演示。 – 2013-03-05 14:26:12

+1

如何添加演示程序说我的代码太长以至于无法添加 – user2136106 2013-03-05 14:37:59

+0

我已更改我的答案以反映您发布的代码。我希望这是你以后的样子。确保你看到它是否可以通过点击这个网址:http://jsfiddle.net/QxdUy/ – Jodes 2013-03-05 15:28:50

回答

0

貌似的

if (typeof(seconds.value) == "number") { newTime.innerHTML = seconds.value; } 
else { newTime.innerHTML = "This is not a number"; } 
timer.appendChild(newTime); 
+1

这个(从我的小javascript知识)仍然显示我已经输入到框中的第一个之前它显示这不是一个数字 – user2136106 2013-03-05 14:42:45

2

你应该把你的例子JSFiddle.net运行,使人们可以看到整个事情,并探讨你为什么不工作一个非常简单的例子。

Here's one I made for you.

我已经改变了你的代码下面。主要区别是我将它分成两个功能。一个检查输入是否是有效的数字,另一个是倒计时/显示。我换了是你声明的倒计时功能的方式的另外一个小东西,你有点声明它两次,我已经改变了它,所以它只能声明一次:

window.onload = function(){ 

    var myDiv = document.getElementById("wrapper"); 
    var startButton = document.getElementById("start"); 
    va r pauseButton = document.getElementById("pause"); 
    var secondsBlock = document.getElementById("seconds"); 
    var timer = document.getElementById("timer"); 
    var newTime = document.createElement("h1"); 


    function countdown(count) { 
     newTime.innerHTML = count; 
     if (count < 10) { 
      newTime.style.color = "red"; 
     }; 
     timer.appendChild(newTime); 
     if (count > 0) { 
      setTimeout(function() { 
       countdown(count - 1); 
      }, 1000); 
     } 
    } 


    function testInput() { 
     var count = seconds.value; 
     if (count == "" || isNaN(count)) { 
      newTime.innerHTML = "This is not a number"; 
      timer.appendChild(newTime); 
     } else if (count > 100) { 
      newTime.innerHTML = "Number must be between 0 and 99" 
      timer.appendChild(newTime); 
     } else { 
      countdown(count); 
     } 

    } 

    startButton.onclick = testInput; 
}