(Из-за некоторого кода фреймворка, который я использую, трудно вызвать setAttribute () или removeAttribute ().)
Тогда я бы сказал, что код фреймворка нуждается в исправлении или сбросе.
Вы не можете установить атрибут для сброса атрибута в соответствии с дизайном. Любое найденное вами решение, включающее внеполосные значения, такие как «null», если оно работает в каком-либо конкретном браузере, было бы совершенно недопустимым в соответствии со стандартом DOM Core.
setAttribute () в любом случае лучше избегать в контекстах HTML браузера (не XML). IE pre-8 не знает разницы между атрибутом DOM и свойством JavaScript, что может легко привести ко многим действительно странным проблемам. Если вы пытаетесь установить «флажок» в качестве атрибута (что теоретически вы должны сделать, установив для него строку «флажок»), не ожидайте, что IE будет сотрудничать.
Полный список логических атрибутов в HTML 4.01 (и, следовательно, XHTML 1.0) (с именами свойств, где они различаются в регистре):
checked (input type=checkbox/radio)
selected (option)
disabled (input, textarea, button, select, option, optgroup)
readonly (input type=text/password, textarea)
multiple (select,input)
ismap isMap (img, input type=image)
defer (script)
declare (object; never used)
noresize noResize (frame)
nowrap noWrap (td, th; deprecated)
noshade noShade (hr; deprecated)
compact (ul, ol, dl, menu, dir; deprecated)