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;
}
}
添加回答
舉報