好久没碰JavaScript,都快忘光了,惭愧惭愧。
今天鸭子说他想让他博客文章的首段首字下沉显示,虽然说可以用CSS中的伪对象first-letter进行样式控制,但是没办法精确到首段(文章内容是FCK生成的N个段落,加ID这个方法也行不通了),也就是定义后文章的每段首字都会下沉,这样就达不到类似报刊的排版效果了,我思量了一下,也只能用JS来解决了。
XML/HTML代码
- <div id="Article_Content">
- <p>段落1</p>
- <p>段落2</p>
- <p>段落3</p>
- </div>
JavaScript代码
- <script type="text/javascript">
- <!--
- window.onload = function() {
- var content = document.getElementById("Article_Content");
- var p = content.getElementsByTagName('p')[0];
- p.setAttribute("class", "yourStyle"); //FireFox
- p.setAttribute("className", "yourStyle"); //IE
- };
- //-->
- </script>
注意,在IE下给元素节点添加class属性必须用className……
除此之外,还发现一个问题:如果你想获得某个容器下的第一个节点,IE和FF还是有区别滴~如使用
JavaScript代码
- var obj = document.getElementById['Article_Content'].childNodes[0];
可以获得Article_Content容器下的第一个节点,但是,使用
JavaScript代码
- alert(obj.nodeType);
测试,发现IE下获得的是元素节点(1),而在FF下获得是文本节点(3),在这种情况下,你可以用循环遍历获得你想要的节点
JavaScript代码
- var rightNode = someNode.childNodes[0];
- while(rightNode.nodeName != 'p'){
- if(rightNode.nextSibling){
- rightNode = rightNode.nextSibling;
- }else{
- break;
- }
- }
或者使用上文的
JavaScript代码
- var p = content.getElementsByTagName('p')[0];
精确获得。

#1
