天天看點

關于使用runtimeStyle屬性問題讨論

首先,runtimeStyle屬性不是必需的,它的存在甚至遠沒有currentStyle有意義,因為由于IE布局、呈現原理限制,style屬性裡的定義,總有一些是無法和currentStyle同步的。什麼意思呢?比如我們不設定TR元素的line-height或table-layout樣式屬性,我們是無法得到任意高度的表格行的,即使你費勁寫上100個style="height:

1px",也是沒有任何效果的。這時style的height雖然是1px,而currentStyle的height仍然是表格實際的高度。firefox不提供runtimeStyle和currentStyle,不知道它怎麼解決這個不同步的問題?是不是會反向同步不能表現的style屬性呢?

總結一:runtimeStyle屬性一定要配對使用,即element.runtimeStyle.xxx =

'attribue';和element.runtimeStyle.xxx = '';配對。如果可以明确的寫出element.style.xxx =

'attribue1';和element.style.xxx =

'attribue2';,那麼就沒有什麼必要使用runtimeStyle了。在同一個元素中混用style和runtimeStyle應該是一定要禁止的,由于style和runtimeStyle覆寫優先級不同,如果混用稍有不慎就會出一些莫名奇妙的問題,徒增debug的困擾和難度。

總結二:runtimeStyle屬性不要在有innerHTML和outerHTML操作的程式設計環境中使用,否則不小心就會郁悶個半死。因為runtimeStyle的修改不會同步會html中的style裡去,這個問題就會類似上面提到的同一進制素中混用style和runtimeStyle的問題。

當然混用在首次實作的時候使用,程式員心裡面其實是很清楚地,一般不會出什麼大差錯,可是這樣的代碼會給後期的debug以及update埋下很嚴重的錯誤隐患。

本文轉自部落格園鳥食軒的部落格,原文連結:http://www.cnblogs.com/birdshome/,如需轉載請自行聯系原部落客。

繼續閱讀