我正在读一些关于布尔属性的内容here,这表示对于布尔属性(在这个特定的示例中,loop
的属性<audio>
),无论您设置什么值,它都会被识别为“true”。为了真正设置为 false,你不能将其设置为loop=false
或使用 javascript 作为['loop']=false
,但必须删除该属性,例如通过执行removeAttribute('loop')
。这是真的?
我一开始相信它,但据用Chrome检查,似乎设置为['loop']=false
实际上会使其被识别为虚假。我不确定这个事实在跨浏览器考虑时有多可靠。浏览器之间有什么区别吗?
布尔属性解释如下:
http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.3.4.2
一些属性扮演布尔变量的角色(例如,选定的
OPTION 元素的属性)。它们出现在开始标签中
元素的 意味着该属性的值为“true”。他们的
缺席意味着值为“假”。
布尔属性可以合法地采用单个值:
属性本身(例如,selected=“selected”)。
因此,虽然某些浏览器可能会将字符串“false”解释为未设置该值,但其他浏览器可能不会决定这样做(这是正确的行为)。事实上,据我所知(或thought),任何非空字符串通常将值设置为 on/true (无论规范所说的合法值是什么)。我相信这也是未定义的行为,因此这也可能会随着浏览器的不同而改变或有所不同(不要依赖它)。
最重要的是,仅仅因为一两个浏览器可能偏离规范并不意味着you应该。完全删除该属性是正确的方法。
Addendum:仔细看看您的评论和问题,我认为您可能对一般属性值感到困惑。在 HTML 中,attr=false
and attr="false"
完全一样。任何版本的 HTML 中都不需要引号(除非当值包含空格时需要使用引号来消除歧义)。例如:
<input class=required>
<!-- This is fine -->
<input class=title required>
<!-- this is fine too, but "required" will be parsed as an attribute -->
<input class="title required">
<!-- To have two classes, we need the quotes -->
所有属性值(在具有这些属性的元素上)都被视为字符串。换句话说,不存在真正的布尔值value (or NULL
value)在 HTML 中就像在 javascript 中一样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)