我有一段代码在循环中的表格中创建复选框并调用它们的 onclick 函数。在 onclick 函数中,我尝试填充一个全局数组,该数组将成为表格选中复选框的位置持有者。此外,如果选中一行,我必须对该行的文本字段中的数字求和(我将其添加到变量百分比中),如果变量超过 100,我必须提醒用户并要求他在复选框中输入值使得总和小于 100。
我的问题是,每次单击复选框时,都会填充全局数组,总和按预期存储在变量中,但复选框上的“勾号”不会立即出现/消失。
我该如何解决这个问题?
代码:
{
var tabId=document.getElementById("AmnestyTransTbl");
var tabrows = tabId.getElementsByTagName('tr');
var percentage=0,c,n;
var ar=[];
for(var i=1,c=2;i<=tabrows.length-3;i++,c=c+2)
{
// Create CheckBox
ar[i]=c;
var checkBox = document.createElement("input");
checkBox.setAttribute("type", "checkbox");
checkBox.id='CB'.concat(i);
checkBox.onclick = function ()
{
var tabId1=document.getElementById("AmnestyTransTbl");
var rowInd=getRowIndex(this);
CBValue[rowInd]=this.checked;
n=ar[rowInd-1];
percentage=(parseInt(percentage) + parseInt(tabId1.getElementsByTagName("input")[n].value));
if(parseInt(percentage)>100)
{
alert("Amnesty Percentage,"+percentage+", greater than 0!. Plesase check again.");
this.checked=false;
}
if(this.checked==false)
percentage=parseInt(percentage)-parseInt(tabId1.getElementsByTagName("input")[n].value);
} }
var td = document.createElement("td");
td.appendChild(checkBox);
tabrows[i+1].cells[1].appendChild(td);
}
function getRowIndex(el)
{
while((el=el.parentNode) && el.nodeName.toLowerCase() != 'tr');
if (el)
return el.rowIndex;
}