我正在从我的应用程序中复制一个场景,
HTML:
<input type='text' disabled='true' />
<input type='text' disabled='true' />
<input type='text' disabled='true' />
<input type='text' disabled='true' />
<div disabled='true'>
<input type='text' disabled='true' />
</div>
<input type='text' disabled='true' />
<p id='test'></p>
我想在点击按钮上启用这些元素,等效的js,
var x = document.querySelectorAll('input[type="text"]');
var p = document.querySelector('#test');
[].slice.call(x);
for (var i = 0; i < x.length; i++) {
p.innerHTML += x[i].getAttribute("disabled") + " ";
x[i].removeAttribute("disabled");
}
适用于所有浏览器,
但是,在IE中,input
禁用它的父级,会显示已禁用,但不是。
有关为何发生这种情况的任何解释?
我确实认为disabled
不是div
的有效属性,但是IE应该忽略这样的属性吗?
答案 0 :(得分:3)
这并不能说明它是一个错误,但可以更深入地了解事物。
http://www.techtamasha.com/the-disabled-attribute-in-internet-explorer/256
直接来自那篇文章:
'禁用'属性仅适用于BUTTON INPUT,OPTGROUP,OPTION, 如果你是SELECT,TEXTAREA标签和浏览器的一般政策 使用任何未授权在标记中使用的属性,然后使用浏览器 忽略它们但可以使用javascript访问它们。但IE不是 在这种情况下那种。如果你在div标签上应用'disabled',IE就会占用 认真对待并禁用div标签。这意味着我们 不仅在div上有任何控制事件,而且还根据“这个 属性是继承的,但是本地声明会覆盖继承的属性 “W3C禁用规范中的规则,IE适用于禁用 div标签中嵌套元素的属性。所以要小心。