好的,所以我试图在程序代码中以编程方式更改复选框的状态。我试过了:
var checkbox = document.getElementById("checkbox");
// I have tried all the following methods.
checkbox.checked = false;
checkbox.selected = false;
checkbox.value = false;
答案 0 :(得分:14)
Dashboard Widgets只运行在WebKit技术上,因此对Safari有效的代码也应该在Dashcode中有效。以下任何一种都应该有效:
checkbox.checked = true;
checkbox.setAttribute("checked", "true");
它们不工作这一事实表明您的代码中存在其他问题。我会检查一下
var checkbox = document.getElementById("checkbox");
正确地为checkbox
变量指定一个元素。另外,检查“复选框”元素的ID是否有效且正确(不重复,没有拼写错误等)。
答案 1 :(得分:6)
我写这个答案时,这个问题已经有一个月了。它可能已经解决了,但无论如何我想补充一点,如果你使用Dashcode,Checkbox部分是一个包含一个标签和一个输入的div,这个是“真正的”复选框。
如果您检查在Safari中加载的html,您会注意到“checkbox”是该元素的类型。
因此,更改复选框状态的正确方法是,假设“input”是其id(虽然可以附加默认编号):
document.getElementById("input").checked="true";
或您想要使用的任何方法。
这里的要点是你试图改变另一个div的状态。
希望它有所帮助!
答案 2 :(得分:2)
checkbox.setAttribute("checked", "checked"); // set
checkBox.removeAttribute("checked"); // remove
答案 3 :(得分:1)
我不知道您使用的浏览器,但是当我在FF 3.6上测试时,它可以工作。 就像这样:
checkbox.checked = false;
while:
checkbox = document.getElementById('blablabla');
或写得那样
document.getElementById('idhere').checked = false;
答案 4 :(得分:1)
这个问题已经存在了一段时间。无论如何,以下内容适用于我们:
checkbox.childNodes [1] .checked = true; checkBox.childNodes [1] .checked = false;
正如前面的回答所指出的,Dashcode创建这些控件的方式需要通过div包装器,它具有实际ID(本例中为复选框)并设置输入的属性,即子节点1
查找输入的实际“id”会有问题,因为您无法控制将哪个ID分配给节点。例如,如果您有两个复选框,那么第一个将具有'input'作为子节点1的id,第二个具有'input1',除非您在某处使用'input'或'input1'作为id你的设计已经!
可能有另一种方法,但我还没有找到它。
答案 5 :(得分:0)
也许:
checkbox.checked = "checked";
然后:
checkbox.checked = "unchecked";
答案 6 :(得分:0)
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。
答案 7 :(得分:-2)
var checkbox = document.getElementById(" checkbox");这行有问题,应该是var checkbox = document.getElementById('#checkbox");