Element.style.cssText
当需要批量赋予Element样式时,cssText是比较好的方式,可以减少reflow,如:
但是,这样会有一个问题,会把原有的cssText清掉,比如原来的style中有’display:none;’,那么执行完上面的JS后,display就被删掉了。
为了解决这个问题,可以采用cssText累加的方法:
但是,cssText(假如不为空)在IE中最后一个分号会被删掉,比较BT….
因此,上面cssText累加的方法在IE中是无效的。
最后,可以在前面添加一个分号来解决这个问题:
最初的想法是想实现tr上加一个背景色,然后td上加一个透明背景图片,但是在IE中的td却无法透明,多出来一个背景颜色,而在其他浏览器中正常。
TR背景IE bug深入分析:

第一个td:通过把td的背景色设为透明,可以发现IE中td的颜色变成红色(此例中为table的颜色,如果table没有指定背景颜色则会向上寻找有背景颜色的祖级,一直到body和html)了,而不是tr的颜色,似乎td的背景直接作用到了tr上,把tr的颜色也给透明了,就像一个滤色镜。
第二个td:通过把无背景的td设置50%的透明度可以发现,在IE中tr的白色背景居然也被透明掉了,似乎tr的背景直接作用到了td上。
解决方法:
网上搜了一下,没找到什么解决bug的方法。。。。
看来,只能转移背景了,把tr的背景色转移到了td上,或者把td上的透明图片转移到tr上。。。。
测试了一下,发现button后面的空格还是有效的,前面的空格无效。
加“ ”的话使用起来非常不方便,暂时还没有找到好的解决方法,先记录一下。
margin也不是很好的解决方案,因为空格在各浏览器的距离也是有细微的差别,你总不可能为这个再去搞一堆margin hack吧。
在IE6中,当JS触发事件时背景图片会闪一下,是重新加载导致的。
是因为IE6默认不缓存背景图片?
事实上,不应该认为是不缓存背景图片的bug,实际上图片仍然在缓存里,不会再去下载一遍(这个我测试过,用一张很大的图片,背景闪烁是在瞬间完成,远远小于图片重新下载的时间)。
可能是IE6重新调用一下缓存里的图片引起的。
以下是一个比较好的解决方案:
(小提示——该办法在部分绿色版的IE6无效,但这些失效的绿色IE6中通过浏览器的前进后退按钮浏览时会有效,当然该办法对大多数的IE6是没问题的)