Šim*_*das 3 html javascript forms dom
我有一个最初禁用的按钮:
<button disabled="disabled">Lorem ipsum</button>
Run Code Online (Sandbox Code Playgroud)
对于此按钮,button.getAttribute('disabled')返回"disabled".但是,当我使用JavaScript启用此按钮时:
button.disabled = false;
Run Code Online (Sandbox Code Playgroud)
然后button.getAttribute('disabled')开始返回null.
现场演示: http ://jsfiddle.net/Rhj3c/1/
这是为什么?不应该.getAttribute()从原始HTML源代码返回值?然后,我如何确定原始HTML源代码中的按钮是否被禁用?
不应该
.getAttribute()从原始HTML源代码返回值?
不,按照规范(强调我的):
如果反射IDL属性是
boolean属性,那么在获取IDL属性时,如果设置了content属性,则必须返回true,如果不存在,则返回false.在设置时,如果IDL属性设置为false,则必须删除content属性,如果IDL属性设置为true,则必须将其设置为空字符串.(这对应于布尔内容属性的规则.)
然后,我如何确定原始HTML源代码中的按钮是否被禁用?
在更改之前检查它.如果问题实际上仅限于"原始HTML源代码"而不是"元素最初是什么"(例如,如果它是在JavaScript中创建的),那可能只是:
var originallyDisabled = Array.prototype.slice.call(
document.querySelectorAll('[disabled]')
);
?
if (originallyDisabled.indexOf(button) !== -1) {
…
}
Run Code Online (Sandbox Code Playgroud)