我正在寫一個JS代碼來計算最終成績,給出一些個人成績,並在html頁面輸出結果,但當我觸發事件和功能時,它只在我的循環中循環一次循環而不會到達代碼的其餘部分(我使用打印語句進行檢查),但我不明白循環的問題導致其餘代碼無法到達。Javascript事件循環只有一次,沒有輸出
HTML:
<!DOCTYPE html>
<html>
<head>
<title>Problem 2</title>
<script src="grades.js" type="text/javascript"></script>
</head>
<body>
<h1>Grade Calculator</h1>
<form id ="myForm">
<div id="assignments">
HW <input type="text" size="1"/>/<input type="text" size="1"/><br/>
HW <input type="text" size="1"/>/<input type="text" size="1"/><br/>
HW <input type="text" size="1"/>/<input type="text" size="1"/>
</div>
<div>
<input type="checkbox" id="curve"/> Curve +5?
</div>
<div id="resultsarea">
<p>
<!--add buttons here -->
<button type="button" id="comp">Compute</button>
<button type="button" id="clr">Clear</button>
</p>
<!-- add results here -->
</div>
</form>
</body>
</html>
JS:
window.onload = pageLoad;
function pageLoad()
{
var cbutton = document.getElementById("comp");
cbutton.onclick = compute;
}
function compute()
{
var list = document.getElementsByTagName("input");
var marks = 0;
var total = 0;
for (var i=1; i <= list.length; i++)
{
if(list[i].type == "text")
{
if (i%2 != 0)
marks += list[i].value;
else
total += list[i].value;
}
}
var result = Math.round(marks/total);
if (document.getElementById("curve").checked)
result += 5;
var out = document.createElement("div");
var t = document.createTextNode(result);
out.appendChild(t);
var display = document.getElementById("resultsarea");
display.append(out);
}
爲什麼你從'i = 1'迭代到'i = list.length'而不是'i = 0'到'i = list.length-1'? – Rikonator
我認爲這是一個索引問題,所以我試圖切換它,但沒有沒有理由,它應該從0 – AuthenticReplica
開始你有機會測試這個,tarek? – smerny