Javascript多语句

时间:2016-07-25 16:49:45

标签: javascript if-statement numbers range

我正在用JS构建一个小应用程序,我发现很难:

我想从用户输入0-100范围内的整数。如果它不是int我将其解析为int。然后我想把这个数字用于checkNum函数,并且出现问题。 让我粘贴我的代码:

$(function () {

initApp();

function getInput(){
    var userInput = window.prompt("Input number from range 0-100");
    var num = parseInt(userInput);
    return num;
};


function checkInput(num){
    if( num < 0 || num > 100){
        displayError();
    }
    else{
        alert('num is ok');
    }
};

function displayError(){
  alert("error");
};

function initApp(){
    getInput();
    checkInput();
};

});

正如你所看到的,即使我把数字放在范围之外,总会有警告说数字是好的 - 这是不正确的。我不知道我做错了什么。我会感激任何帮助。更重要的是,我想在这里放置函数Number.isNaN()以在输入中提供无意义的输入。我想到了这样的陈述:

if(Number.isNaN(num) || num <0 || num > 100){...}

我想我的错误对于比我更有经验的人来说显而易见且微不足道。

3 个答案:

答案 0 :(得分:1)

要回答您的问题,您不会将任何内容传递给checkInput(),因此它始终未定义,undefined < 0 || undefined > 100始终为false。解决方案是将返回的值从getInput()传递给checkInput(),如下所示:

function initApp(){
    var value = getInput();
    checkInput(value);
}

要回答您的目标:使用<input type="number">并让浏览器为您完成工作。

&#13;
&#13;
<form>
  <input type="number" min="0" max="100" step="1" />
  <button>Try to submit!</button>
</form>
&#13;
&#13;
&#13;

无需JavaScript。

答案 1 :(得分:0)

您需要将getInput的返回值传递给checkInput

function initApp(){
    checkInput(getInput());
}

附注:功能声明(您已经使用过的)最后不需要;

答案 2 :(得分:0)

你只需要像这样给出getInput返回的值;)

&#13;
&#13;
initApp();

function getInput(){
    var userInput = window.prompt("Input number from range 0-100");
    var num = parseInt(userInput);
    return num;
};


function checkInput(num){
    if( num < 0 || num > 100){
        displayError();
    }
    else{
        alert('num is ok');
    }
};

function displayError(){
  alert("error");
};

function initApp(){
    var value = getInput();
    checkInput(value);
};
&#13;
&#13;
&#13;