0

ここに新しい質問があります。何も入力されていないか、テキストが入力されていない場合は、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>
4

2 に答える 2

2

あなたの例を JSFiddle.net で実行して、人々が全体を見て、それが機能しない理由を調査できるようにする必要があります。

これが私があなたのために作ったものです。

コードを以下に変更しました。主な違いは、2 つの関数に分割したことです。入力が有効な数値であることを確認するものと、カウントダウン/表示を行うものです。私が変更したもう 1 つの小さな点は、countdown 関数の宣言方法でした。2 回宣言したようなものでした。1 回だけ宣言するように変更しました。

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;
}
于 2013-03-05T14:47:30.713 に答える
0

の非常に単純なケースのように見えます

if (typeof(seconds.value) == "number") { newTime.innerHTML = seconds.value; }
else { newTime.innerHTML = "This is not a number"; }
timer.appendChild(newTime);
于 2013-03-05T14:32:49.593 に答える