element.setAttribute("disabled", some_bool)
не работает так, как вы думаете.В частности, по стандарту disabled
это то, что известно как логический атрибут ;само его присутствие, независимо от его ценности, делает это правдой.disabled=""
, disabled="disabled"
, disabled="true"
и даже disabled="false"
(!!!) означают одно и то же в большинстве браузеров.(Хотя последние два на самом деле являются недопустимым HTML, большинство браузеров будут считать их эквивалентными disabled="disabled"
в истинных целях. Включая каждый из Большой четверки.) Вы устанавливаете логический атрибут в значение true, устанавливая значение - любое значение, дажеесли это ложно - и вы устанавливаете его в ложь, полностью удаляя атрибут.
Если вам небезразлично фактическое строковое значение атрибута (что в этом случае не следует), и особенно если атрибутне выставляется через DOM (то есть не имеет соответствующего свойства), затем используйте (get/set)Attribute
.В большинстве случаев (особенно если вы заботитесь о том, как это влияет на элемент, например, в этом случае, когда вы пытаетесь отключить элемент), используйте свойство DOM.