隐藏属性这样的属性是布尔属性是什么意思?有人可以用外行的话来解释这个吗?
答案 0 :(得分:95)
如前所述,布尔属性是被评估为true或false的属性。
但是,从HTML5规范 - http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes
2.5.2布尔属性
许多属性是布尔属性。存在的 元素的布尔属性 代表真正的价值,而且 没有属性代表 虚假的价值。
如果属性存在,则其值必须为空字符串 或者是ASCII的值 不区分大小写的匹配 属性的规范名称,没有 领先或尾随空格。
布尔属性不允许使用值“true”和“false”。至 表示虚假值,属性 必须完全省略。
请注意,这意味着HTML5中允许{strong 1>
。正确可以是<div hidden="true">
或<div hidden>
或<div hidden="">
,也可以是不区分大小写和单引号/不带引号的任何变体。
答案 1 :(得分:35)
2.5.2布尔属性
许多属性是布尔属性。存在的 元素上的boolean属性表示真值,而 缺少属性表示错误值。
如果属性存在,则其值必须为空字符串 或者是属性的ASCII不区分大小写匹配的值 规范名称,没有前导或尾随空格。
布尔属性不允许使用值“true”和“false”。 要表示false值,必须省略该属性 共
答案 2 :(得分:3)
正如其他人所说,布尔值有三种可能的 true 语法:
<textarea readonly></textarea>
<textarea readonly=""></textarea>
<textarea readonly="readonly"></textarea>
一个用于 false :
<textarea></textarea>
除了你有一些像这样的例外,显然:
拼写检查[HTML5]
将此属性的值设置为true表示该元素需要检查其拼写和语法。值default表示元素将根据默认行为进行操作,可能基于父元素自己的拼写检查值。值false表示不应检查该元素。
答案 3 :(得分:0)
2.4.2。布尔属性
许多属性是布尔属性。一个的存在 元素上的boolean属性表示真实值,并且 没有属性表示错误值。
如果存在该属性,则其值必须为空字符串 或该属性的ASCII大小写不匹配的值 规范名称,没有前导或尾随空格。价值 布尔属性上不允许使用“ true”和“ false”。代表 一个假值,该属性必须完全省略。
示例: 这是已选中并禁用的复选框的示例。选中和禁用属性是布尔属性。
<label><input type=checkbox checked name=cheese disabled> Cheese</label>
这可以等效地写成这样:
<label><input type=checkbox checked=checked name=cheese disabled=disabled> Cheese</label>
您还可以混合样式。以下仍然等效:
<label><input type='checkbox' checked name=cheese disabled=""> Cheese</label>
查看此信息Boolean HTML Attributes,这可能也对您有帮助。
答案 4 :(得分:-1)
A。基于Bob.at.Indigo.Health的评论:
具有一些应该表示布尔值的html属性(例如,复选框的checked
属性)...将其设置为的唯一方法 false
是忽略属性 ,:
<input type="checkbox" />
所有其他分配将被解释为true
(即使不遵循html标准),e。 g。
<input type="checkbox" checked="checked"/>
<input type="checkbox" checked=undefined />
<input type="checkbox" checked=null/>
<input type="checkbox" checked=false/>
<input type="checkbox" checked="false"/>
<input type="checkbox" checked=""/>
<input type="checkbox" checked="foo"/>
B。某些 JavaScript 库可能会定义特殊值,这些特殊值也会被解释为false。
例如,使用d3.js,您可以通过使用attr
调用null
函数来删除属性(“将它们设置为false”):
d3Selection.attr('checked', null);
HTMLElement的getAttribute方法返回null
或''
,如果
属性不存在。
另请参阅:
C。如果您从 JavaScript 中的HTMLElement
继承,则可以定义与字符串不同类型的自定义属性。另请参见https://www.webcomponents.org/introduction
但是,我将这些JavaScript属性而不是HTML属性称为
<html>
<head>
<script>
class TreezElement extends HTMLElement {
static get observedAttributes() {
return ['value'];
}
get valueProperty() {
var stringValue = this.getAttribute('value')
return this.convertFromStringValue(stringValue);
}
set valueProperty(newValue) {
var stringValue = this.convertToStringValue(stringValue)
if(stringValue === null){
this.removeAttribute('value');
} else {
this.setAttribute('value', stringValue);
}
}
constructor(){
super();
}
//should be overridden by inheriting class
convertFromStringValue(stringValue){
return stringValue;
}
//should be overridden by inheriting class
//return null if the value attribute should be removed
//(="set to false")
convertToStringValue(value){
return value;
}
updateElements(newValue){
//should be implemented by inheriting class
}
attributeChangedCallback(attr, oldValue, newValue) {
if(attr==='value'){
if(newValue!==oldValue){
this.updateElements(newValue);
this.__dispatchInputEvent();
}
}
}
}
</script>
</head>
</html>