JavaScript获取子元素

JavaScript013

JavaScript获取子元素,第1张

这是因为getElementById再结合children属性获取的是DOM元素,而querySelectorAll获取的则是NodeList对象元素。前者会随页面DOM结构的变化而变化,比如删除了box中的一个div,这个div就会从children中被“真实地”删掉,children.length的计数也会减1。而后者如果删除其中的某个子元素,被删的元素并不会消失,而是变成一个空对象,children1.length的计数也不会改变,这样的话 for(var i=0i<children1.length) 这个循环由于i的值不变(总是等于0),而children1.length也不会减少(总是4),这样就变成死循环了(同时也意味着把一个已删除的元素不断重复删除)。

改成这样就没问题了:

for(var i=0i<children1.lengthi++){

  box.removeChild(children1[i])

}

使用jquery获取某DIV的子元素,通常有以下两种方法:

子元素选择器(>),例如 $("div>img") 获取div下的img子元素;

遍历函数children(),例如 $("div").children("img") 同样是获取div下的img子元素。

如果想要获取DIV下的不仅是子元素,而且还包括其他后代元素(孙辈、曾孙辈元素...),那么,相应的两种方法是:

后代元素选择器(空格),例如 $("div img")  获取div下的所有级别的img后代元素;

遍历函数find(),例如 $("div").find("img")  获取div下的所有级别的ing后代子元素。

<script>

function dom() {

var s= document.getElementById("test")

del_ff(s) //清理空格

var chils= s.childNodes //得到s的全部子节点

var par=s.parentNode //得到s的父节点

var ns=s.nextSbiling //获得s的下一个兄弟节点

var ps=s.previousSbiling //得到s的上一个兄弟节点

var fc=s.firstChild //获得s的第一个子节点

var lc=s.lastChile //获得s的最后一个子节点

}

</script>