我正在使用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”等于索引表中最后一行的数据。我想知道如何解决这个问题。谢谢!