如何 "if not an integer , alert and repeat prompt" ?与 isNAN 相同

How to "if not an integer , alert and repeat prompt" ? the same with isNAN

我正在为此苦苦挣扎。 如何 "if not an integer , alert and repeat prompt" ? 我有警报工作,但我无法让它再次提示。

与 isNAN 相同,它根本不起作用!

谢谢

$(document).ready(function () {
    var fizzBuzz = function () {
        var userNum = prompt('Enter a number!');
        var convertNum = +userNum;
        for (var i = 1; i <= convertNum; i++) {
            if (i % 15 === 0) {
                $('ul').append('<li>' + "fizzbuzz" + '</li>');
            } else if (i % 3 === 0) {
                $('ul').append('<li>' + "fizz" + '</li>');
            } else if (i % 5 === 0) {
                $('ul').append('<li>' + "buzz" + '</li>');
            } else if (isNaN(userNum)) {
                alert("Input is not a number");
            } else if (convertNum % 1 !== 0) {
                alert('Please enter a whole number');
                return false;         
            } else {
                $('ul').append('<li>' + i + '</li>');
            }
        }
    };
    fizzBuzz();
});

只要有一个循环,只有在用户输入数字值后才会退出,例如

var userNum = null;
while(userNum == null || isNaN(userNum)){
    userNum = prompt('Enter a number!');
}

实例:http://jsfiddle.net/7x8vjm3b/(尝试输入字母而不是数字)

您也可以将其设为 post 循环检查并为用户添加额外的消息

do{
    userNum = prompt('Enter a number!');
    if(isNaN(userNum)){
        alert("You entered '" + userNum + "'. This is invalid - you must enter a number");   
    }
}while(isNaN(userNum));

这应该有效...

var fizzBuzz = function () {
        var userNum = prompt('Enter a number!');
        var convertNum = +userNum;
        if(isNaN(userNum)){
            console.log('not a number');
            fizzBuzz()
        }else{
            doSomethingElse()
        }

};
fizzBuzz();

您的 if 语句和循环的逻辑顺序对于您要实现的目标而言是不正确的。你想先检查这个数字是否是一个数字,然后你想检查它是否是一个整数,然后如果它通过了这两个要求你想进入for循环。

$(document).ready(function () {
    var fizzBuzz = function () {
        var userNum = prompt('Enter a number!');
        var convertNum = +userNum;
        if(isNaN(userNum)){
            alert("Input is not a number");
            fizzBuzz();
        }
        else if (convertNum % 1 !== 0) {
            alert('Please enter a whole number');
            fizzBuzz();
        }
        else {
            for (var i = 1; i <= convertNum; i++) {
                if (i % 15 === 0) {
                    $('ul').append('<li>' + "fizzbuzz" + '</li>');
                } else if (i % 3 === 0) {
                    $('ul').append('<li>' + "fizz" + '</li>');
                } else if (i % 5 === 0) {
                    $('ul').append('<li>' + "buzz" + '</li>');
                } else {
                    $('ul').append('<li>' + i + '</li>');
                }
            }
        }

    };
    fizzBuzz();
});