我正在使用JavaScript來操縱DOM,方法是創建一個表。這個想法是,生成的表格是一個償還列表,每行旁邊有按鈕讓經理批准或拒絕報銷。下面是在HTML中生成表格的邏輯。表中的最後一行獲取刪除無論按下按鈕
var r;
for (r in ajaxObject) {
document.getElementById("reTable").innerHTML += "<tr>" +
"<td>" + ajaxObject[r].reimbursementId + "</td>" +
"<td>" + ajaxObject[r].amount + "</td>" +
"<td>" + ajaxObject[r].statusName + "</td>" +
"<td>" + ajaxObject[r].description + "</td>" +
"<td>" + ajaxObject[r].dateSubmitted + "</td>" +
"<td>" + ajaxObject[r].reimbursementTypeName + "</td>" +
"<td><button id=\"accept" + r + "\">Accept</button></td>" +
"<td><button id=\"deny" + r + "\">Deny</button></td>" +
"</tr>";
}
r = 0;
for (r in ajaxObject) {
var e;
e = document.getElementById("accept" + r);
console.log(e);
e.onclick = function() { approveRe(ajaxObject[r].reimbursementId) };
console.log(e.onclick);
e = document.getElementById("deny" + r);
console.log(e);
e.onclick = function() { denyRe(ajaxObject[r].reimbursementId) };
console.log(e.onclick);
}
不幸的是,我遇到了一個很奇怪的問題。無論按下哪個「批准」或「拒絕」按鈕,表格中的最後一行都會被刪除。我相信這是因爲按鈕的onclick事件附加的函數實際上並沒有評估「ajaxObject [r] .reimbursementId」,直到它們被調用,由此點「r」等於索引表中最後一行的數據。我想知道如何解決這個問題。謝謝!