虽然checked属性返回true,但复选框检查/勾选未显示

时间:2012-09-28 12:35:08

标签: javascript checkbox

我有一段代码在循环中的表中创建复选框并调用它们的onclick函数。在onclick函数中,我尝试填充一个全局数组,该数组将成为表格的选中复选框的位置持有者。此外,如果选中一行,我必须将该行的文本字段中的数字相加(我将其添加到变量百分比),如果变量超过100,我必须提醒用户并要求他在复选框中输入值总和小于100。

我的问题是每次单击复选框时,全局数组都会被填充,sum会按预期存储在变量中,但是' tick'在复选框上没有立即消失

如何解决此问题?

代码:

    {
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;
}

1 个答案:

答案 0 :(得分:1)

我猜是罪魁祸首,

Plz尝试替换此

 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);
          }
相关问题