JavaScript 中的 setAttribute
08月 17th, 2008 — Dreamer看了一个月的文档和资料以后,终于让我参与到项目中来了,哈哈,痛快!虽然只是让我解决一个小问题,不过有活干就是好。在写代码的过程中遇到了一个小问题,就是JavaScript的浏览器兼容问题,当我用到 setAttribute 设置某个元素的 id属性时,在 FireFox 里面居然不起作用,但是在 IE 8中好使,于是我就问了一下同事,他告诉我说用 setAttribute 设置一些常规属性如 id ,className 的时候经常不起作用,只能用 object.id = value 这样来设置,试用了一下之后,发现果然。
还有就是,在判断DOM中的childNodes 的时候 FireFox 和 IE 也不一样,比如下面这一段代码:
<div id=”div1″>
<div id=”div2″ />
<div id=”div3″ />
</div>
在IE中,div1的第一个子节点,也就是 childNodes[0] 和 firstChild,是 div2 ,但是在FireFox中就不一定了,div2前面好像会出现一些莫名其妙的节点,所以对某一个节点的childNodes进行处理的时候一定要注意。
什么时候这些浏览器才能遵循同一标准呢?!
从零开始学习感觉还不错。
本文链接: http://www.zhuoqun.net/html/y2008/1089.html 转载请注明出处,谢谢。
TrackBack引用地址:http://www.zhuoqun.net/html/y2008/1089.html/trackback











浏览器兼容是很头痛的问题,不止JS,CSS也是如此
和这样的写法是不一样的,firefox会把空白,回车等不可见元素也作为一个节点,在firefox中做childNode的时候要多加一层nodeType判断 0是elementNode,3是textNode,好像是这样的
ie:setAttribute(”className”,name) = ff:setAttribute(”class”,name)
ps,回复过滤乐html标签不好啊。你把那几个div写在一行,不要回车,div2就是div1的child[0]了
childNode[0],回复起来真麻烦,不能修改留言
恩,这个我知道的,不过编码的时候写在同一行很难看啊
做东西得时候,firefox真得很不爽。用它得时候感觉还好一点:)
js和css在不同浏览器之间确实存在很多兼容性问题。在考虑兼容性时,我们往往考虑最多的还是ie和firefox两大主流,在我看来,firefox还是最好的,起码它对w3c标准实现是目前最好的,而ie来说,ie6实在不敢恭维,而ie7在标准上已经有了很大的进步,希望ie8更好。css的兼容性问题还好,最大的问题好像是在属性选择器上,而对于最基本的使用上并不会有问题。至于js的兼容性,现在已经有了比较成熟的解决方案,目前的js框架解决兼容性是最基本的要求,目前的主流js框架有:jquery,mootools,prototype,ext,yui。prototype是最早的一批框架之一,曾经辉煌过。jquery和mootools就可以说是由prototype发展而来,里面保留了很多prototype的风格。jquery可以说是现在是流行的,甚至已经有专门的书籍了。而mootools的定位则是开发者的框架,对应用者有一定的要求,代码很精炼,读过源码后,会对js有一个全新的认识,也是我认为最好的框架。前面三个应该属于一个派系的,而yui和ext则属于另一个排系,其实ext最早就是基于yui实现的,现在已经被作者完全重写了。yui就是你们公司雅虎的作品,也可以说是雅虎领导了这一场js革命.而ext对于js也是功不可没,曾经引导了一股热潮,但后来由于作者的收费,导致现在的降温。前面三个框架可以说是基础框框,开发者可以开发出自己的页面组件。而yui和ext可以说就是完整的框架了,它有了一套完整的可视化组件,ext在这方面是做的最好的,但开发者也很难扩展。
如果有空,可以挑一个框架的源码看看,即使不用,也可以看看它们在解决兼容性上是如何做的。
我现在正学习 YUI 呢,应该可以学到不少东西的 :)
个人认为,jquery和ext的参考文档写的最好。很容易上手。ext功能最强大,
ext在组件方面确实是做的最好的,基本上满足了所有的应用,而且水平都很高。但是代价就是我们很难自己去扩展出自己的组件,即使做出来了,风格也很难和已存在的组件一致。还有一点就是我们很难作出自己的皮肤,只能选择已存在的皮肤,当然现在也有人额外去做皮肤了。呵呵,我说的只是Ext的缺点,它的优点还是多多的,ext无疑是最优秀的框架之一。很佩服他的作者,一个人奋斗的结果!
不如用jquery,有方便,兼容性又好,速度方面也不错.
我觉得在大量js开发的时候还是用jquery好.