用户提供一个范围,比如说3-5。脚本应该在该范围内生成一个随机整数。现在,这段代码很好用。
length = Math.floor(Math.random() * (5 - 3 + 1)) + 3;
但是,如果我以编程方式从范围中提取值并进行同样的操作,结果将是无稽之谈。
//Split into elements
var range = lengthval.split("-"),
minlen = range[0],
maxlen = range[1];
if (!isNaN(minlen) && !isNaN(maxlen)) {
//Pick a number from range
length = Math.floor(Math.random() * (maxlen - minlen + 1)) + minlen;
}
真正奇怪的是,下面的“混合”片段工作得很好。
//Split into elements
var range = lengthval.split("-"),
minlen = range[0],
maxlen = range[1];
if (!isNaN(minlen) && !isNaN(maxlen)) {
//Pick a number from range
length = Math.floor(Math.random() * (maxlen - minlen + 1)) + 3;
}
当然,提供的范围是3-5。
有人能帮一个新的javascript开发人员解决这个问题吗?:)
发布于 2015-07-06 13:06:39
不知道lengthval
是什么,我很确定你需要使用parseInt
minlen = parseInt(range[0], 10)
maxlen = parseInt(range[1], 10)
发布于 2015-07-06 13:08:05
这是您的,感谢并更新从@depperm:
//Split into elements
var range = '3-5'.split("-");
minlen = Number(range[0]);
maxlen = Number(range[1]);
var length;
if (!isNaN(minlen) && !isNaN(maxlen)) {
//Pick a number from range
length = Math.floor(Math.random() * (maxlen - minlen + 1)) + minlen;
alert(length);
}
希望这能有所帮助。
发布于 2015-07-06 13:11:24
您必须将从split
获得的字符串解析为数字
var range = "3-5".split("-");
var minlen = parseInt(range[0]);
var maxlen = parseInt(range[1]);
if (!isNaN(minlen) && !isNaN(maxlen)) {
//Pick a number from range
var length = Math.floor(Math.random() * (maxlen - minlen + 1)) + minlen;
}
还声明变量(使用var
),并以分号结束语句。
http://jsfiddle.net/ks3hrzbL/
https://stackoverflow.com/questions/31246655
复制相似问题