使用javascript更改复选框的''checked'属性

Posted

技术标签:

【中文标题】使用javascript更改复选框的\'\'checked\'属性【英文标题】:changing ''checked' attribute of a checkbox using javascript使用javascript更改复选框的''checked'属性 【发布时间】:2012-08-17 00:09:11 【问题描述】:

现在当它第一次加载 html 页面时,我的复选框是这样创建的:

<input type="checkbox" id="CBOX1" name="CBOX1" onclick="onCBOX(this)" disabled/>

在同一个 html 中的函数中:

boolean checked = true;
document.theForm.elements['CBOX1'].checked = true;

由于某种原因,稍后在页面上调用该函数时,未选中复选框值。是因为当我第一次创建复选框时,我创建它时没有“选中”属性?然后当我为它分配一个值时,该元素似乎不再包含选中的属性,就像我检查页面源时一样。还是一样的……

<input type="checkbox" id="CBOX1" name="CBOX1" onclick="onCBOX(this)" disabled/>

为了简单起见,我确定使用 AJAX 对该元素的其他属性进行了更改,但我不知道为什么不保留选中的属性...还有什么替代方法?

【问题讨论】:

checked 是变量吗?如果是,它在哪里定义?它有什么价值?您必须为 document.theForm.elements['CBOX1'].checked 分配一个布尔值。 checkedjavascript 的第一行中来自哪里?复选框的checked 属性应该是一个布尔值,真或假。 checked 是一个已定义的布尔变量,它是真还是假? 大声笑。 3 个人有同样的问题 How do I check a checkbox with jQuery or JavaScript? 的可能重复项 【参考方案1】:

勾选复选框:

document.theForm.elements['CBOX1'].checked = true;
document.theForm.elements['CBOX1'].checked = "checked"; 

取消选中复选框:

document.theForm.elements['CBOX1'].checked = false; 

如果您希望在加载时取消选中它,请不要触摸它,默认情况下它是未选中的。

此外,如果您在输入字段中使用 disabled 属性,则不会注册任何点击事件。

请参阅此jsfiddle 以获取示例。

编辑

如果可点击性不是问题,那么就按照我已经指出的去做。这是一个完整的工作示例。

<html>
 <head>
 </head>
 <body>
  <input id="tar" type="checkbox" disabled />
  <input type="checkbox" onclick="callFunc(this)" />
  <script type="text/javascript">
   function callFunc(elem)
    document.getElementById("tar").checked = elem.checked;
   
  </script>
 </body>
</html>

【讨论】:

我需要在页面加载时取消选中它,即通过 然后在用户使用它之后,该函数将添加一个'checked'属性给它.. @bouncingHippo - 如果您希望用户与您的输入元素进行交互,请删除 disabled 属性。 可点击性不是这里的问题,当我第一次创建复选框 它没有“已检查”属性。稍后,我使用 document.theForm....checked=true 似乎不起作用,因为检查页面源显示 即使在调用该函数之后仍然缺少选中的属性... @bouncingHippo - 你一定做错了。有关前面所述的属性设置的清晰工作示例,请参见编辑。在做出错误假设或开发之前更好地调试您的代码可能需要很长时间。 MOREOVER,检查页面源仅显示页面的状态是什么加载时 你说得对,我用你的建议解决了这个问题。谢谢,请点赞这个问题,不胜感激【参考方案2】:

尝试将其设置为 true

document.theForm.elements['CBOX1'].checked = true; 

【讨论】:

我不能先将其设置为 true,因为我们的客户希望在页面首次加载时将其设置为 check=false,并且根据传入的数据,它将 check=true.... 然后根据传入的数据设置值true。不确定您的问题是什么。【参考方案3】:

试试这个,反正没测试过。

document.theForm.elements['CBOX1'].checked = true; 

【讨论】:

我不能先将其设置为 true,因为我们的客户希望在页面首次加载时将其设置为 check=false,并且根据传入的数据,它将 check=true.... 然后将true更改为false。即document.theForm.elements['CBOX1'].checked = false;。希望这能解决你的问题,因为我不清楚你想要实现什么。 换句话说 ?

以上是关于使用javascript更改复选框的''checked'属性的主要内容,如果未能解决你的问题,请参考以下文章

区分用户更改 Checkbox.Checked 值还是以编程方式更改

如何使用 JavaScript 或 jquery 选中/取消选中复选框?

MatCheckbox preventDefault()和event.checked值

如何使用复选框更改 div 的内容

JavaScript 表单提交上的JS Check agreement复选框

javascript控制checked属性