HTML 中有一些属性是“ bool 值”——如果它们存在,浏览器会将它们视为“真”,而不管值是多少。在 <option>
上选择 就是此类属性的一个示例。标签。另一个在 <input type="checkbox">
上被检查 .
如果您调用 setAttribute()
对于这样的属性,您似乎无法设置任何值来使浏览器始终如一地表现得好像缺少该属性一样。
例如
option.setAttribute("selected", false)
仍会标记已选择的选项。 null、空字符串或undefined 也不起作用。如果有人知道我可以设定一个值来实现我的目标,请告诉我,但我认为不存在。 (由于我使用的一些框架代码,不调用 setAttribute()
,或者调用 removeAttribute()
很困难。)
我正在尝试找到此类属性的详尽列表以对它们进行特殊处理。这是我到目前为止所拥有的:
- 已选择
<option>
- 检查
<input>
- 禁用,只读
<input>
,<select>
,<option>
,<optgroup>
,<button>
,<textarea>
- 多个
<select>
请帮助我完成此列表 - 或者指向一个现有列表。
最佳答案
(Because of some framework code I use, not calling setAttribute(), or calling removeAttribute() is difficult.)
然后我会提交框架代码需要修复或转储。
根据设计,您不能通过 setAttribute 取消设置属性。根据 DOM 核心标准,您发现的任何涉及带外值(如“null”)的解决方案,如果它恰好在任何特定浏览器中工作,都将是完全无效的。
setAttribute() 在任何情况下最好避免在浏览器(非 XML)HTML 上下文中使用。 IE pre-8 不知道 DOM 属性和 JavaScript 属性之间的区别,这很容易导致许多非常奇怪的问题。如果您尝试将“checked”设置为一个属性(理论上您应该将其设置为字符串“checked”),请不要指望 IE 会合作。
HTML 4.01(以及 XHTML 1.0)中 bool 属性的完整列表是(属性名称大小写不同):
checked (input type=checkbox/radio)
selected (option)
disabled (input, textarea, button, select, option, optgroup)
readonly (input type=text/password, textarea)
multiple (select,input)
ismap isMap (img, input type=image)
defer (script)
declare (object; never used)
noresize noResize (frame)
nowrap noWrap (td, th; deprecated)
noshade noShade (hr; deprecated)
compact (ul, ol, dl, menu, dir; deprecated)
关于javascript - bool HTML 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/706384/