2012-02-24 45 views
-2

这个CSS表达式一次性CSS表达式

P { 
    background-color: expression((new Date()).getHours()%2 ? "#B8D4FF" : "#F08A00"); 
} 

可以调用数千次

但这种做法,意味着

<style> 
P { 
    background-color:expression(altBgColor(this)); 
} 
</style> 
<script type="text/javascript"> 
function altBgColor(elem) { 
    elem.style.background = new Date()).getHours()%2 ? "#B8D4FF" : "#F08A00"; 
} 
</script> 

意味着它不会。为什么?

+2

谁在乎?根本不要使用CSS表达式。 – thirtydot 2012-02-24 12:30:14

回答

0

你是怎么想到要发生走就走?

第一次调用动态表达式时,会覆盖包含该表达式的背景属性。

+0

但是为什么一个版本调用数千次,另一个则不是。这个例子的来源是高性能网站Steve Sounders。 – dublintech 2012-02-24 12:38:32

+0

,因为一旦属性被覆盖,动态表达式不再存在,所以它不会被重新调用。 – Alnitak 2012-02-24 12:42:32

+0

你是说这个属性在第二种方法中被覆盖过一次,而在第一种情况下它并没有被覆盖,而是一直被设置? – dublintech 2012-02-24 13:21:38

0

“对于脚本,动态属性可以是任何合法的JScript或Microsoft Visual Basic Sc​​ripting Edition(VBScript)语句。”说MSDN。 JScript不是JavaScript。此外,好东西正试图从CSS表达式完全:)

1

变化<style><script>

<script type="text/javascript"> 
    function altBgColor(elem) { 
     elem.style.background = new Date().getHours()%2 ? "#B8D4FF" : "#F08A00"; 
    } 
</script> 
+0

完成。但是你的提交不是答案。 – dublintech 2012-02-24 12:37:43