Изменение состояния флажка программно в коде - PullRequest
7 голосов
/ 22 марта 2010

Хорошо, поэтому я пытаюсь программно изменить состояние флажка в виде dashcode. Я пробовал:

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

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

Ответы [ 8 ]

15 голосов
/ 22 марта 2010

Виджеты Dashboard просто работают на технологиях WebKit, поэтому код, действительный для Safari, также должен быть действительным в Dashcode. Любое из следующего должно работать:

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

Тот факт, что они не работают, указывает на проблему в другом месте вашего кода. Я бы проверил строку

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

Правильно назначает элемент переменной checkbox. Кроме того, проверьте правильность и правильность идентификатора элемента «checkbox» (не дубликат, не опечатка и т. Д.).

6 голосов
/ 23 апреля 2010

Этому вопросу исполнился месяц, когда я пишу этот ответ.Вероятно, это уже было решено, но в любом случае я хотел бы добавить, что если вы используете Dashcode, часть Checkbox представляет собой div, который содержит одну метку и один вход, этот является «настоящим» флажком.

Если вы проверяете html, как он загружен в Safari, вы заметите, что «checkbox» является типом элемента.

Поэтому правильным способом изменить состояние флажка было бы, предполагая «input»это его идентификатор (к нему может быть добавлен номер по умолчанию):

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

или любой другой метод, который вы хотите использовать.

Суть в том, что вы пытались изменить состояниедругого див.

Надеюсь, это поможет!

2 голосов
/ 22 марта 2010
checkbox.setAttribute("checked", "checked"); // set
checkBox.removeAttribute("checked"); // remove
1 голос
/ 01 ноября 2011

Этот вопрос был давно. Несмотря на это, у нас работает следующее:

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

Как указывалось в предыдущем ответе, для того, чтобы Dashcode создавал эти элементы управления, вам необходимо обойти оболочку div, которая имеет фактический идентификатор (в этом примере флажок), и установить свойство для ввода, которым является дочерний узел 1. .

Поиск фактического «идентификатора» ввода будет проблематичным, поскольку вы не можете контролировать, какие идентификаторы назначены узлу. Например, если у вас есть два флажка, то первый будет иметь «input» в качестве идентификатора для дочернего узла 1, а второй «input1», если из источника вы не использовали «input» или «input1» в качестве идентификатора где-то в ваш дизайн уже!

Возможно, есть другой метод, но я его еще не нашел.

1 голос
/ 08 декабря 2010

Я не знаю, какой браузер вы использовали, но когда я тестировал на FF 3.6, он работает. просто так:

checkbox.checked = false;

пока:

checkbox = document.getElementById('blablabla');

или напишите так

document.getElementById('idhere').checked = false;
0 голосов
/ 07 декабря 2017
var checkbox = document.getElementById("checkbox"); 

есть проблема с этой строкой, она должна быть

var checkbox = document.getElementById('#checkbox");
0 голосов
/ 16 июля 2015
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.

0 голосов
/ 22 марта 2010

Может быть:

checkbox.checked = "checked";

Тогда:

checkbox.checked = "unchecked";
...