在学习JS过程中,当看到了下面几点的时候,才开始有点理解JS,点不是很多,但是个人认为很有启示意义
1. firstChild属性和lastChild属性的来源
在JavaScript中,使用childNodes属性可以返回一个数组,这个数组包含给定元素节点的全体子节点,如代码所示:
<body>
<ul id="action">
<li title="第一段文字">第一个</li>
<li title="第二段文字">第二个</li>
</ul>
<script type="text/javascript">
var attr_p = document.getElementById("action");
alert(attr_p.childNodes[1].childNodes[0].nodeValue);
</script>
</body>
如果要取得id为action的ul的第一个li内的文本节点(如取得:第一个),可以使 用…childNodes[1].childNodes[0].nodeValue这种方法找到,使 用…childNodes[1].firstChild.nodeValue同样可以找到第一个li的文本节点,
结论childNodes[0]等价于firstChild,无论何时何地,重要需要访问childNodes[]数组的第一个元素,我们就可以把它写成firstChild,DOM还提供一个与之对应的lastChild属性-clildNodes[]数组里的最后一个元素。
2. insetAfter函数的原理:
function insetAfter(newElem,targetElem){
//首先得到父结点,如果elem是没有兄弟结点,直接把要插入的结点放到父结点后就行,会自动放在targetElem的后面
var parentNode=targetElem.parentNode;
if(parentNode.lastChild==targetElem){
parentNode.appendChild(newElem);
}else{
//如果有兄弟结点 parentNode.insertBefore(newElem,targetElem.nextSibling);
}
}
3. 绑定多个函数到一个onload事件上:
function addLoadEvent(func){
var oldοnlοad=window.onload;
if(typeof window.onload!="function"){
window.οnlοad=func;
}else{
window.οnlοad=function(){
oldonload();
func();
}
}
}
参考
http://www.css88.com/archives/387