这是IE中的错误吗?

时间:2014-03-27 07:45:07

标签: javascript internet-explorer internet-explorer-11

我正在从我的应用程序中复制一个场景,

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应该忽略这样的属性吗?

JSFiddle

1 个答案:

答案 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标签中嵌套元素的属性。所以要小心。