※诚保超值※使用JavaScript操作CSS

这本JavaScript大全(第六版)的第十六章是ㄚ琪最近在对一支很旧的JavaScript码侦错时,注意到并加以修改程式码的,如果没有看到这一章的话,可能ㄚ琪到今天还在摸哪里的问题吧。

这只程式其实在IE8跑得还满顺的,但是有一天ㄚ琪把程式丢到Windows 7中去跑,因为这版本的IE是9,ㄚ琪突然发现它不能动,想当然耳,在Chrome也是无法动,ㄚ琪其实并不想改,但听到客户有意要添购新的硬体,这样的话势必用到新的IE版本,ㄚ琪只好想办法改啰,因为客户永远是对的。

ㄚ琪花了一个上午的时间检查,发现有两个问题:

1.使用使用document.all[],这在JavaScript大全(第六版)的15.2.6 document.all[]中有提到,‘在DOM被标准化之前,IE4引进了document.all[]群集(collection)来表示文件中所有的元素。document.all[]已经被标准的getElementById()与getElementByTagName()等方法所取代,现在已被弃用了,而且不应该再使用。’

2.操作行内样式的问题,主要是这样一行程式:

submenu.left = calculateSumOffset(menu, ‘offsetLeft’);

这在IE8执行是没问题的,但是在IE9一直有问题,calculateSumOffset在IE9回传的值没有问题,不过它是回传纯数值。

ㄚ琪读到这一节时,有这样的提醒:‘记得所有的定位特性都要加上单位。因此这样设定left特性是不正确的:

e.style.left = 300;//不正确:这是个数字而非字串

e.style.left = “300”;//不正确:少了单位

像这样:

e.style.left = “300px”;//这样才正确

所以ㄚ琪怀疑在IE8以前是可以不用加单位的,果真没错,ㄚ琪改写这样的程式码:

submenu.left = calculateSumOffset(menu, ‘offsetLeft’)+”px”;

这样结果就正确了。

看来很多旧版的JavaScript的程式都要进行修改了,因为大家已慢慢在改用更新的IE9或是更快的Chrome了,要改…

来听一下苏芮的休息工作再工作吧…

曾失意失意失足过百千次
如今我知这是没意思
曾阻我方向的都一一退下
还?我种下许多好处

曾相信相信这世上有天意
优劣的终可做主
触发一切迈向新的故事
愚钝的蠢的总不感到满意

明天 也许不再坐于此
明日 自由新的际遇
云起 静眼忘无尽的远方天地
人生只不过是如此
休息工作再工作
恋爱分开再恋爱

曾相信这里急需一些新意
来转变赶上新目标
转变转变还是不太易
愚钝的蠢的总不感到满意

新版的浏览器需要有新意,用旧版的程式的您千万不要太愚钝…