我想在html文件中将按钮显式设置为启用。原因是我的代码稍后会将按钮切换到禁用状态,如果代码崩溃,我可能会看到按钮被禁用
我可以用鼠标禁用按钮
$(“#btn”).attr(“禁用”、“真实”)
但是一个html包含:
<;按钮id=“btn”disabled=“false”>;我想被启用</按钮>;
仍将按钮显示为已禁用。
检查员显示:
<;按钮id=“btn”已禁用=”“>;我想被启用</按钮>;
我知道我能行
$(“#btn”).removeAttr(“禁用”)
或者类似的,但是对于html中的许多元素,这样做并不方便
令人惊讶的是,HTML对布尔属性不使用布尔值
在HTML中,布尔属性是通过仅仅添加属性名来指定的,或者(特别是在XHTML中)通过使用属性名作为其值来指定的
<;输入类型=";复选框“;残疾人士><;!--HTML-->;
<;输入类型=";复选框“;残疾/><;!--还有HTML-->;
<;输入类型=";复选框“;已禁用=”;残疾人士/&燃气轮机<;!--XHTML和HTML-->;
这在HTML规范中有记录:http://www.w3.org/TR/html5/infrastructure.html#boolean-属性
许多属性是布尔属性。元素上存在布尔属性表示真值,不存在该属性表示假值
价值观;“真的”;及;假;在布尔属性上不允许使用。要表示假值,必须完全忽略该属性
更令人困惑的是,在DOM中,这些布尔属性是用布尔值指定的,例如:
/**@类型HTMLInputElement*/
const inputElement=document.createElement('input');
inputElement.disabled=true;//<;——DOM*确实*在这里使用了正确的布尔值。
console.log(inputElement.disabled);//印刷品;“真的”;
inputElement.disabled=false;
console.log(inputElement.disabled);//印刷品;假;
…由于JavaScript的错误性,要添加甚至更多的混乱,在属性中使用字符串值将不会像您预期的那样工作:
inputElement.disabled='true';
console.log(inputElement.disabled);//印刷品;“真的”;
inputElement.disabled='false';
console.log(inputElement.disabled);//*静物*prints";“真的”;
(这是因为JavaScript字符串'false'未被类型强制为JavaScript布尔值false)
> <某些 HTML属性确实有真和 false 作为可能的值,如 CordeNealEdaby/Cl>(也有继承作为第三选项),也考虑表单自动完成="&引用&燃气轮机可以是打开和关闭(以及许多其他值),这可能也会让一些人绊倒我认为一些传统的(Internet Explorer 4.0时代)扩展,如<;对象>和<;小程序>可能具有布尔属性,并且在其子对象中肯定具有布尔属性<;参数值="&引用&燃气轮机属性,这只是一个历史性的好奇心。)