2011-04-14 296 views
3

我试图建立一个使用此代码的范围内产生一个随机数(自/至)的Web应用程序:问题,而试图生成随机数

function generateRandom(rFrom, rTo) 
{ 
    var num; 
    num = Math.floor(rFrom + (1 + rTo - rFrom) * Math.random()); 

    return num; 
} 

function btGenerate_onClick(event) 
{ 
    var nFrom; 
    var nTo; 

    nFrom = document.getElementById("txtFrom").value; 
    nTo = document.getElementById("txtTo").value; 

    document.getElementById("lblResult").innerText = generateRandom(nFrom, nTo); 
} 

但是,当我在测试网络分别使用属性FromTo25应用程序,我得到了号码,如222102027211。所以,我怎样才能纠正这种因此它会产生是25之间因为没有sucess试图号码?

回答

3

的问题是,你必须明确地打开字符串值转换为数字:

function generateRandom(rFrom, rTo) 
{ 
    var num; 
    rFrom = Number(rFrom); rTo = Number(rTo); 
    num = Math.floor(rFrom + (1 + rTo - rFrom) * Math.random()); 

    return num; 
} 

乘法会做它含蓄地为“r要”,但随后 你必须做出“rFrom “添加的数字,否则它将被解释为字符串连接。

编辑 — oops我从错误的代码块开始。这现在有你原来的功能,我所做的只是将参数明确地转换为数字。

+0

我得到了正确的值了,但突然一个'6'出现... – 2011-04-14 17:39:20

+0

哦对不起我错了代码复制:-)我会非常编辑我的答案 – Pointy 2011-04-14 17:41:07

+0

感谢。它现在完美**:**) – 2011-04-14 17:44:53

2
 
function generateRandom(rFrom, rTo) 
{ 
    var num; 
    num = Math.floor(Math.random()*parseInt(rTo)) + parseInt(rFrom); 

    return num; 
} 
+0

现在,我得到的数字,比如'02'(这是可以接受的),'22','23'和'42'(这是不能接受的) – 2011-04-14 17:31:58

+0

您的问题是使用字符串。你应该parseInt函数(rFrom)和parseInt函数(RTO)来解决这个问题。 – Felipe 2011-04-14 17:38:51

+0

添加parseInt函数铸件值... – mossplix 2011-04-14 17:41:46