以编程方式在代码中更改复选框的状态

问题描述:

好吧,所以我试图在代码中以编程方式更改复选框的状态。我已经试过:以编程方式在代码中更改复选框的状态

var checkbox = document.getElementById("checkbox"); 

// I have tried all the following methods. 
checkbox.checked = false; 
checkbox.selected = false; 
checkbox.value = false; 
+0

你可以使用checkbox.checked = false但不要使用setAttribute('checked','checked') ,它似乎工作,但它失败,如果你手动点击复选框,然后尝试检查或取消选中使用setAttribute('checked','checked')或removeAttribute('checked') – jforjs 2016-11-30 13:13:34

+0

引用我最近的帖子为此,http ://jforjs.com/setattribute-removeattribute-checkbox/ – jforjs 2016-11-30 13:14:23

可能:

checkbox.checked = "checked"; 

然后:

checkbox.checked = "unchecked"; 
+0

刚刚尝试过,它也不行。 – Daniel 2010-03-21 21:39:18

+0

好的。我对Dashcode没有经验,但它看起来像HTML。:)希望有更有经验的人 – 2010-03-22 00:35:35

checkbox.setAttribute("checked", "checked"); // set 
checkBox.removeAttribute("checked"); // remove 
+0

不是,那也行不通 – Daniel 2010-03-21 21:45:11

Dashboard构件只是WebKit的技术运行,所以代码有效期为Safari浏览器也应该是有效的在Dashcode中。以下任何一种都可以工作:

checkbox.checked = true; 
checkbox.setAttribute("checked", "true"); 

他们不工作的事实表明您的代码中存在其他问题。我会检查线路

var checkbox = document.getElementById("checkbox");  

正确分配给checkbox可变的元件。此外,检查您的“复选框”元素的ID是否有效和正确(不重复,没有错字等)。

+0

是的,我认为它可能是这样的,但我已经四重检查,ID是“复选框”,代码是 checkbox = document.getElementById(“checkbox”); 我在运行时没有收到任何错误。我在堆栈布局中运行它,会改变什么吗? – Daniel 2010-03-21 22:26:11

+0

这是答案,尤其是第一个版本(不需要去任何属性)。如果设置'checked'属性不起作用,则故障位于其他地方。 – 2010-03-22 00:22:56

+0

我刚刚运行了一个测试,它设置了checked属性,但是它没有更新复选框。另外,通过一些更多的测试,最初它说被检查的变量是未定义的。 – Daniel 2010-03-22 01:52:14

这个问题是一个月前,因为我写这个答案。它可能已经解决了,但无论如何我想补充一点,如果你使用的是Dashcode,复选框部分是一个包含一个标签和一个输入的div,这是一个“真正的”复选框。

如果您检查HTML,因为它在Safari中加载,您会注意到“复选框”是元素的类型。

因此,正确的方法来改变复选框会的状态,假设“输入”是它的ID(它可能有虽然连接默认号码):你想使用

document.getElementById("input").checked="true"; 

或任何方法。

这里的重点是你试图改变另一个div的状态。

希望它有帮助!

+0

这是正确的。 OP可能试图将父DIV元素的状态更改为“checked”。 – mclaughlinj 2010-08-21 09:32:01

我不知道你使用了哪个浏览器,但是当我在FF 3.6上测试时,它可以工作。 只是把这样的:

checkbox.checked = false; 

同时:

checkbox = document.getElementById('blablabla'); 

或写这样的

document.getElementById('idhere').checked = false; 

这个问题已经存在了一段时间。无论如何,以下作品适用于我们:

checkbox.childNodes [1] .checked = true; checkBox.childNodes [1] .checked = false;

正如在前面的答案中指出的那样,Dashcode创建这些控件的方式需要通过具有实际ID(此示例中为复选框)的div包装器并设置输入属性,即子节点1。

寻找输入的实际'id'会有问题,因为您无法控制分配给节点的id。例如,如果你有两个复选框,那么第一个将有'输入'作为子节点1和第二个'input1'的id,除非你的输入源或输入1是一个id你的设计已经!

有可能是另一种方法,但我还没有找到它。

cell = row.insertCell(-1); 
sel = document.createElement('input'); 
sel.setAttribute("type", "checkbox") 
sel.setAttribute("name", "myCheckBox") 
cell.appendChild(sel); 
cell.getElementsByTagName('input')[0].checked = true; 

我创建了一个表格,然后将行和单元格创建并在其中创建一个复选框。 我可以抓住第一个输入对象并将检查状态设置为true。

var checkbox = document.getElementById(“checkbox”);这行应该有问题,它应该是var checkbox = document.getElementById('#checkbox“);