为什么我不能在函数中使用使用prompt()创建的变量?

时间:2016-01-18 14:52:32

标签: javascript

下面是一个函数,它应该在用户指定的两个数字之间产生一个随机数。如果我手动指定数字,则该等式有效。但是,如果我使用提示功能,它似乎产生一个完全随机的数字。

function randOm() {
    var high = prompt("high");
    var low = prompt("low");
    return Math.floor(Math.random() * (high - low + 1)) + low;
}

document.write(randOm());

4 个答案:

答案 0 :(得分:0)

您需要使用parseFloat将其转换为Number

答案 1 :(得分:0)

以数字转换提示的结果,因为它返回字符串:

return Math.floor(Math.random() * ((+high) - (+low) + 1)) + (+low);

答案 2 :(得分:0)

prompt已知会返回string,因此在执行您的操作之前,您必须convert string to integer。另一个缺点是,如果用户输入任何字符如提示框中的“hello”或“hi”,您的函数可能会返回NaN,因为无法将字符解析为数字。

脚本:

function randOm() {
    var high = prompt("high");
    var low = prompt("low");
    var h=parseInt(high);
    var l=parseInt(low);
    return Math.floor(Math.random() * (h - l + 1)) + l;
}

document.write(randOm());

答案 3 :(得分:0)

if (Number.isNaN(high) || Number.isNaN(low)){
    alert ("both entries must be numbers!");
}
else{
    low = parseFloat(low);
    high = parseFloat(high);
    return Math.floor(Math.random() * (high - low + 1)) + low;
}