使用JavaScript更改页面中的前景色和背景色

时间:2011-12-07 13:54:18

标签: javascript dom colors background-color

我应该在Android Webview中显示html数据。我可以使用包装器div标签更改正文前景,背景颜色,但我仍然在内部样式标记中定义了颜色值。

我可以使用JS函数迭代DOM并在加载页面后更改所有颜色和background-color值吗?

最初我尝试使用正则表达式来替换值,但是显示的数据有可能是HTML,我不想破坏。

4 个答案:

答案 0 :(得分:3)

这是一个示例脚本,用于更改具有背景颜色样式的所有“div”的页面加载背景颜色。对于需要更改背景颜色的所有其他类型的元素,需要采用这种方法。

<script type="text/javascript">

    window.onload = onWindowLoad();
    function onWindowLoad() {
        var divs = document.getElementsByTagName("div");
        for (i = 0; i < divs.length; i++) {
            if (divs[i].style.backgroundColor != null && divs[i].style.backgroundColor != "") {
                divs[i].style.backgroundColor = "Blue";
            }           
        }
    }
</script>

答案 1 :(得分:1)

有可能。您可以通过调用wrapper.getElementsByTagName(“*”)(包装器作为包装器元素)来获取包装器div中的所有元素。根据网站的大小,这可能会很慢。

答案 2 :(得分:0)

是的,你可以做一些涉及两步法的事情,首先你使用适当的选择器(例如“getElementById()”和“getElementsByTagName()”)选择所有目标元素,然后通过style属性。例如:

// Select all elements whose color must be changed.
var els = [];
els.push(document.getElementById("item1"));
els.push(document.getElementById("item2"));
els.push(document.getElementById("item3")); // And so on...

// Set their new foreground and background colors.
for (var i=0; i<els.length; i++) {
  els[i].style.color = 'black'; // New foreground color.
  els[i].style.backgroundColor = 'white'; // New background color.
}

另外,考虑使用jQuery这样的JavaScript库,具有丰富的选择器功能;这可以大大简化第一步。

答案 3 :(得分:0)

我强烈建议您使用wrapper.getElementsByTagName("*").style.backgroundColor = "purple";。考虑到你的约束,这似乎是最好的解决方案。是的,getElementsByTagName("*")会很慢,但考虑到这将在Android设备上,我相信它可以很容易地解决这个问题。