Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 复选框勾选/勾选不显示,尽管选中属性返回true_Javascript_Checkbox - Fatal编程技术网

Javascript 复选框勾选/勾选不显示,尽管选中属性返回true

Javascript 复选框勾选/勾选不显示,尽管选中属性返回true,javascript,checkbox,Javascript,Checkbox,我有一段代码,它在循环中的表中创建复选框并调用它们的onclick函数。在onclick函数中,我尝试填充一个全局数组,该数组将作为表的复选框的位置保持器。此外,如果选中一行,我必须对该行文本字段中的数字求和(我将其添加到变量百分比中),如果变量超过100,我必须提醒用户,并要求他在复选框中输入值,以便总和小于100 我的问题是,每次单击复选框时,都会填充全局数组,总和按预期存储在变量中,但复选框上的“勾号”不会立即出现/消失 我如何解决这个问题 代码: { var tabId=document

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

我的问题是,每次单击复选框时,都会填充全局数组,总和按预期存储在变量中,但复选框上的“勾号”不会立即出现/消失

我如何解决这个问题

代码:

{
var tabId=document.getElementById(“AmnestyTransTbl”);
var tabrows=tabId.getElementsByTagName('tr');
风险值百分比=0,c,n;
var-ar=[];
对于(变量i=1,c=2;i100)
{
警报(“特赦百分比,+Percentage+”,大于0!。请再次检查。“);
这个.checked=false;
}
if(this.checked==false)
percentage=parseInt(percentage)-parseInt(tabId1.getElementsByTagName(“输入”)[n].value);
}    }
var td=document.createElement(“td”);
td.appendChild(复选框);
tabrows[i+1]。单元格[1]。appendChild(td);
}
函数getRowIndex(el)
{
while((el=el.parentNode)和&el.nodeName.toLowerCase()!='tr');
如果(el)
返回el.rowIndex;
}

我想找到了罪犯

请试着换掉这个

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

这可能是导致取消选中的原因…如果(parseInt(percentage,10)>100){this.checked=false;}只有当百分比>100时才会取消选中。如果我第一次点击一个复选框,其中添加的文本字段的值(在该行中)是35,它将不会进入该循环并取消选中复选框…或者你认为我在那里犯了一些错误吗?我注释掉了if条件及其块。它仍然是不固定的。请同时发布你的html代码?和完整的javascript代码,包括函数,如getRowIndex。什么是CBValue?我已经添加了getRowIndex。HTML不是直接编码的,而是一个工具的一部分…嘿,Jade,谢谢,这是一个错误,尽管它解决了为什么错误值的百分比没有降低,我们的问题仍然存在-当我单击复选框时,它仍然不显示勾号mark@Neethusha我已经更新了我的答案plz检查,你是否从你的代码中得到了任何javascript错误愉悦2 hear dat:)如果它解决了问题,请将其标记为答案虽然现在发生的是当百分比>100时,它会抛出一个警报(我已经添加). 如果有3个复选框的值为34、56、10,如果选择了这3个复选框,则允许我提交一个提交按钮。但是,如果我返回并取消选中10的行,它会抛出警报,说percantage是110(应该是90)…你想让我投票吗?:-)是的,我会!但是你能帮我做这个吗?我认为if(this.checked==false)可以解决这个问题。。。。
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);
          }