我在使用控制台脚本在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。
答案 0 :(得分:2)
元素上的style
属性不是字符串,而是一个对象。如果浏览器允许你为它分配一个字符串并正确处理它,那么它们对你有帮助。 :-)(他们时不时地向我们提供这样的好处。)
而是分配给style
对象的display
属性:
divs[i].style.display = "block";
这是可靠的跨浏览器。唯一可以覆盖它的是CSS中的!important
规则,这可能是你没有的。
如果你真的想完全替换元素的样式信息(而不是仅仅将display
设置为block
),那么可以通过setAttribute
:
divs[i].setAttribute("style", "display: block");
这也是可靠的跨浏览器。它会清除元素上的任何其他内联样式,只替换它们。