我有以下功能:
function getRange() {
// generate a range of values from value up to climit
// excluding climit
var countup = function(value, climit) {
if (value < climit) {
console.log(value);
return countup(value + 1, climit);
}
};
// gather input from the form
var x = document.getElementById("range_form").range_x.value;
var y = document.getElementById("range_form").range_y.value;
// Validate the input
if (isNaN(x) || isNaN(y)) {
console.log("Both values have to be integers!!!");
} else {
// run the countup fonction
countup(x, y);
}
}
现在函数countup(单独)按照我的预期工作。一旦我将它放在getRange函数中,它就会停止正常工作。当我在表单中放置一些值(例如,2和9)时,控制台中的输出是无止境的1111111111111111 然后是错误:Uncaught RangeError:超出最大调用堆栈大小。
请告知
答案 0 :(得分:2)
x
和y
是字符串。因此,
value + 1
导致连接,<
进行词汇比较(例如,"211111" < "3"
为真)使用parseInt(..., 10)
将您的输入转换为数字:
var x = parseInt(document.getElementById("range_form").range_x.value, 10);