JavaScript使用setAttribute更新disabled属性不生效问题咨询
问题原因
disabled 属于HTML标准中的布尔属性,这类属性的生效逻辑和普通属性完全不同:只要元素上存在该属性,无论属性值设置为什么内容(哪怕是false、0这类语义上代表否定的值),属性对应的效果都会生效。
你调用 hitButton.setAttribute('disabled', 'false') 时,只是把disabled属性的值改成了字符串"false",但disabled属性本身仍然存在于按钮元素上,所以禁用效果依然生效。
只有彻底移除元素上的disabled属性,才能解除禁用状态,这就是 hitButton.removeAttribute('disabled') 有效的原因。
更简便的操作方式
除了删除属性,你还可以直接操作DOM元素的disabled布尔属性,不需要操作HTML属性:
// 禁用按钮 hitButton.disabled = true // 解除禁用 hitButton.disabled = false
这种方式不需要做属性增删操作,修改后会直接同步到元素状态,逻辑更直观。
内容的提问来源于stack exchange,提问作者Sapthaka
相关产品推荐
相关产品推荐

