用户提供范围,例如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开发人员解决这个问题吗? :)
答案 0 :(得分:1)
我不确定lengthval
是什么,我相当肯定你需要使用parseInt
minlen = parseInt(range[0], 10)
maxlen = parseInt(range[1], 10)
答案 1 :(得分:1)
在这里,感谢@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);
}

希望这有帮助。
答案 2 :(得分:0)
您必须将从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
)并以分号结束语句。