Что может случиться, так это то, что ваш CheckBoxID
неверен и поэтому возвращает неправильный элемент.
В JavaScript, говоря, что checkbox.checked = false;
будет, если этот объект ранее не имел свойства checked
, добавит один к объекту с предоставленным значением.Итак, если ваш CheckBoxID
на самом деле неверен, неудивительно, что ваше предупреждение показывает ложь;любой ненулевой элемент, который вы возвращаете с помощью getElementById
, позволит вам добавить к нему отмеченное свойство.
В частности, в asp.net
при создании столбца флажка, например
<asp:CheckBoxField Text="Hello" DataField="foo" />
он отображает html следующим образом:
<span class="aspNetDisabled">
<input id="gv_ctl00_0" type="checkbox" name="gv$ctl02$ctl00" disabled="disabled">
<label for="gv_ctl00_0">Hello</label>
</span>
Пара возможностей:
- Идентификатор, который вы получаете, может быть из диапазона, к которому вы добавляетепроверенное свойство.
- Вы устанавливаете флажок для проверки, но поскольку он отключен, он не обновляет свое состояние - хорошо, похоже, что отключенные флажки могут иметь свои отмеченные свойстваобновлено.Надеюсь, №1 - это ваша проблема.
Хорошим местом для начала отладки было бы изменить вашу функцию на эту
function UncheckedItemsCheckBox(CheckboxID) {
var checkbox = document.getElementById(CheckboxID);
alert(checkbox.checked); // <------- should display false, but will
// display undefined if this element is
// something other than a checkbox
checkbox.checked = false;
alert(checkbox.id + " : " + checkbox.name + " : " + checkbox.checked);
}