努力思考 + 实践, 眼高手低是不行的. 注册 | 登陆

IE与FF下对节点操作的问题若干

好久没碰JavaScript,都快忘光了,惭愧惭愧。

今天鸭子说他想让他博客文章的首段首字下沉显示,虽然说可以用CSS中的伪对象first-letter进行样式控制,但是没办法精确到首段(文章内容是FCK生成的N个段落,加ID这个方法也行不通了),也就是定义后文章的每段首字都会下沉,这样就达不到类似报刊的排版效果了,我思量了一下,也只能用JS来解决了。

XML/HTML代码
  1. <div id="Article_Content">  
  2.   <p>段落1</p>  
  3.   <p>段落2</p>  
  4.   <p>段落3</p>  
  5. </div>  
JavaScript代码
  1. <script type="text/javascript">   
  2. <!--   
  3. window.onload = function() {   
  4.     var content = document.getElementById("Article_Content");   
  5.     var p = content.getElementsByTagName('p')[0];   
  6.     p.setAttribute("class""yourStyle");     //FireFox   
  7.     p.setAttribute("className""yourStyle"); //IE   
  8. };   
  9. //-->   
  10. </script>  

注意,在IE下给元素节点添加class属性必须用className……

除此之外,还发现一个问题:如果你想获得某个容器下的第一个节点,IE和FF还是有区别滴~如使用

JavaScript代码
  1. var obj = document.getElementById['Article_Content'].childNodes[0];  

可以获得Article_Content容器下的第一个节点,但是,使用

JavaScript代码
  1. alert(obj.nodeType);  

测试,发现IE下获得的是元素节点(1),而在FF下获得是文本节点(3),在这种情况下,你可以用循环遍历获得你想要的节点

JavaScript代码
  1. var rightNode = someNode.childNodes[0];   
  2. while(rightNode.nodeName != 'p'){   
  3.   if(rightNode.nextSibling){   
  4.     rightNode = rightNode.nextSibling;   
  5.   }else{   
  6.     break;   
  7.   }   
  8. }  

或者使用上文的

JavaScript代码
  1. var p = content.getElementsByTagName('p')[0];  

精确获得。

参考文章:开发跨浏览器javascript---《Ajax基础教程》笔记

Tags: javascript, ie, firefox, css

« 上一篇 | 下一篇 »

只显示5条记录相关文章

顽皮的闭包 (浏览: 2934, 评论: 0)
CSS hack:区分IE6,IE7,firefox (浏览: 4748, 评论: 1)
Javascript 获取页面高度(多种浏览器) (浏览: 7597, 评论: 0)
用css来控制图片显示大小 (浏览: 4840, 评论: 0)
CSS中Float概念相关文章采撷 (浏览: 7614, 评论: 1)

Trackbacks

点击获得Trackback地址,Encode: UTF-8

2条记录访客评论

哈哈。。。解决了这个问题,谢了哈猪

Post by hexiang on 2007, November 4, 7:05 PM 引用此文发表评论 #1

@hexiang 兄弟哈,谢啥。

Post by zwws on 2007, November 4, 9:28 PM 引用此文发表评论 #2


本文因为某种原因此时不允许访客进行评论