为什么脚本控制台编辑DOM在FireFox中工作而不是IE 11?

时间:2016-06-08 15:13:30

标签: javascript internet-explorer firefox dom

我在使用控制台脚本在IE中编辑DOM时遇到了一些问题。

在Firefox中我可以进入控制台

find

并且页面上的所有div都有适当的块样式。

然而,我的IE11控制台中的相同脚本对DOM没有影响,并向控制台报告func addChildViewController(_ childController: UIViewController) 。我知道代码正在找到div,因为我可以在循环中放置var divs = document.getElementsByTagName("div"); for(var i = 0; i < divs.length; i++){ divs[i].style = "display:block"; } 并识别每个div。

那是怎么回事?我完全不知道为什么没有发生任何事情,我对使用f12开发人员工具进行IE的所有搜索都没有提到Javascript无法正常工作。事实上,文档说

  

控制台不仅显示代码输出,还提供执行代码的界面。只需在控制台底部的命令行窗格中输入任何有效的JavaScript。

1 个答案:

答案 0 :(得分:2)

元素上的style属性不是字符串,而是一个对象。如果浏览器允许你为它分配一个字符串并正确处理它,那么它们对你有帮助。 :-)(他们时不时地向我们提供这样的好处。)

而是分配给style对象的display属性:

divs[i].style.display = "block";

这是可靠的跨浏览器。唯一可以覆盖它的是CSS中的!important规则,这可能是你没有的。

如果你真的想完全替换元素的样式信息(而不是仅仅将display设置为block),那么可以通过setAttribute

来做到这一点
divs[i].setAttribute("style", "display: block");

这也是可靠的跨浏览器。它会清除元素上的任何其他内联样式,只替换它们。