0

我有一段代码在循环中的表格中创建复选框并调用它们的 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;
}
4

1 回答 1

1

我猜是罪魁祸首

请尝试更换这个

 if(parseInt(percentage,10)>100) {
              this.checked=false;
          }

          if(this.checked=false)
          {
               percentage=parseInt(percentage)-parseInt(tabId1.getElementsByTagName("input")[n].value);
          }

有了这个

if(parseInt(percentage,10)>100) {
              this.checked=false;
          }
          else
          {
              this.checked=true;
          }

          if(this.checked==false)
          {
               percentage=parseInt(percentage)-parseInt(tabId1.getElementsByTagName("input")[n].value);
          }
于 2012-09-28T13:32:35.743 回答