2012-02-24 47 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