如何指定不被JS中指定的样式覆盖的样式

时间:2010-03-17 03:04:36

标签: javascript html css

我有一些元素的样式由JS动态修改。但是,我希望其中一个不会被修改。

我怎样才能指定它的样式,这是静态的,无论如何都不能被覆盖。感谢。

5 个答案:

答案 0 :(得分:4)

这是不可能做到的。加载CSS后执行JavaScript&应用。你必须改变你的ID和类和/或JavaScript代码,以便它不会针对您不想更改的元素。

答案 1 :(得分:2)

你做不到。

您可以做的最好的事情是覆盖执行修改的javascript方法。

答案 2 :(得分:2)

简短的回答是你不能。浏览器遇到CSS时应用CSS。由于对JavaScript的调用是更改该特定样式的最新调用,因此它将应用于该元素。

您可以在第一个脚本之后运行另一个更改该特定元素样式的JavaScript。由于该元素有一些独特之处,您可以通过其ID,类或名称来引用它。

答案 3 :(得分:2)

如您所见,您无法在CSS中执行此操作;但是,您可以指示JavaScript不更新元素的样式,但需要一些手动注意。请考虑以下事项:

HTML

<ul id="some-list">
    <li>A</li>
    <li>B</li>
    <li class="no-style-update">C</li>
    <li>D</li>
</ul>

JavaScript(香草)

var nodes = document.getElementById("some-list").getElementsByTagName("LI");

for ( var i=0, l=nodes.length; i<l; ++i ) {
    // If style updates are allowed
    if ( !nodes[i].className.match(/\bno-style-update\b/i) ) {
        // Update the element's style
    }
}

答案 4 :(得分:-1)

也许您可以将元素放入iframe,其中src属性引用不同的路径或域。然后容器页面中的javascript无法修改元素,因为相同的原始规则不允许修改来自不同来源的数据。