2 回答
TA贡献1851条经验 获得超3个赞
问题:问题是你的for-loop的条件语句是always ,这会导致无限循环,因此页面无响应。在这种情况下也不需要为函数提供参数true
解决方案:
这个问题可以用数学方法解决,无需循环。
// BEST APPROCH
function divisibleBy() {
var firstNum = parseInt(document.getElementById('firstNumber').value);
var secondNum = parseInt(document.getElementById('secondNumber').value);
var result = secondNum*parseInt(firstNum/secondNum+1);
document.getElementById('result').innerHTML = result;
}
但是,如果您确实需要使用循环,这里是解决方案,但请记住,在for 循环中设置限制几乎与上述解决方案相同(或将条件设置为i <= firstNum*secondNum,因为它在遇到解决方案时已经有了break语句)
// WORST APPROCH
function divisibleBy() {
var firstNum = parseInt(document.getElementById('firstNumber').value);
var secondNum = parseInt(document.getElementById('secondNumber').value);
for (var i = firstNum+1; i <= secondNum*(firstNum/secondNum+1); i++) {
if (i % secondNum === 0) {
document.getElementById('result').innerHTML = i;
break;
}
}
}
但我建议使用循环,这将更令人满意地解决这个问题,并忽略对上述代码中的do-While限制进行不必要的计算。i
// BEST LOOP/SIMPLE APPROCH
function divisibleBy() {
var firstNum = parseInt(document.getElementById('firstNumber').value);
var secondNum = parseInt(document.getElementById('secondNumber').value);
do{
firstNum++;
}
while(firstNum%secondNum != 0)
document.getElementById('result').innerHTML = firstNum;
}
TA贡献1891条经验 获得超3个赞
你正在使用 for (var i = firstNum + 1; i > firstNum; i++)并且这个条件总是满足。因此它会无限循环。
尝试这个 :
for (var i = firstNum + 1; ; i++) {
if (i % secondNum === 0) {
document.getElementById('result').innerHTML = I;
break;
}
}
添加回答
举报