線上評分系統,每題選項為一組 Radio,名稱動態生成(如 `q_1`, `q_2`...),無法用固定 `getElementsByName` 獲取。
function getRadioKV() {
var tb = document.getElementById('scoreTable'); // 給 table 加 id
var params = '';
for (var i = 0; i < tb.rows.length; i++) {
var inputs = tb.rows[i].getElementsByTagName('input');
var selected = false;
for (var j = 0; j < inputs.length; j++) {
if (inputs[j].type === 'radio' && inputs[j].checked) {
params += '&' + encodeURIComponent(inputs[j].name) + '=' + encodeURIComponent(inputs[j].value);
selected = true;
break; // 每行只有一個被選中
}
}
if (!selected) {
alert('第 ' + (i+1) + ' 題未作答!');
inputs[0].focus();
return null;
}
}
return params.substring(1); // 去掉首個 &
}
// 使用
var data = getRadioKV();
if (data) {
// AJAX 提交或表單提交
console.log(data);
}