提示号码 - 如果不是数字或小数点,则提示输入新号码并转换为号码

时间:2014-06-08 14:32:12

标签: javascript

我需要发出一个提示,要求输入一个数字,然后将该字符串转换为数字。如果他们没有输入数字,我需要再次提示输入一个数字并将他们输入的字符串转换为数字。如果输入十进制数,我需要提示输入一个整数并将字符串转换为数字。

我认为我可以为所有人使用相同的变量名,但为了使其工作,我需要为其他两个提示定义不同的变量。为什么是这样?我如何才能将其降低,以便在调用函数时,我只能引用一个变量而不是三个变量?

这是我的代码:

var numSubmit = prompt("Please enter a number");

    if(isNaN(numSubmit)) {
        var newNum = prompt("A number is required.");
        newNum = +newNum;
        // Why did I need to define a new variable in order to convert it to a number? Why didn't keeping the original variable and writing numSubmit = +numSubmit work?
    }
    else if (numSubmit % 1 != 0) {
        var noDecimal = prompt("Please do not enter a decimal number.");
        noDecimal = +noDecimal;
    }
    else {
        numSubmit = +numSubmit;
    }

我的原始代码是:

var numSubmit = prompt("Please enter a number");

    if(isNaN(numSubmit)) {
         prompt("A number is required.");
         numSubmit = +numSubmit;
    }
    else if (numSubmit % 1 != 0) {
         prompt("Please do not enter a decimal number.");
         numSubmit = +numSubmit;
    }
    else {
        numSubmit = +numSubmit;
    }

当我输入一封信,并收到一条消息说需要一个号码,然后输入一个号码时,结果又以NaN的形式返回。

编辑添加:

这似乎有效:

var numSubmit = prompt("Please enter a number");

while(isNaN(numSubmit)) {
    numSubmit = prompt("A number is required")
}

while(numSubmit % 1 != 0) {
    numSubmit = prompt("Please do not enter a decimal number.");
}

numSubmit = +numSubmit;

1 个答案:

答案 0 :(得分:0)

问题在于您没有将numSubmit指定给代码中第二个和第三个提示的值。

您需要在numSubmit =prompt("Please enter a number")

之前添加prompt("Please do not enter a decimal number.")

这就是你的代码应该是这样的:

var numSubmit = prompt("Please enter a number");

    if(isNaN(numSubmit)) {
         numSubmit = prompt("A number is required.");
         numSubmit = +numSubmit;
    }
    else if (numSubmit % 1 != 0) {
         numSubmit = prompt("Please do not enter a decimal number.");
         numSubmit = +numSubmit;
    }
    else {
        numSubmit = +numSubmit;
    }