这是因为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])
}
在当前页面写js:<script>
function GridSearch() {
var ifr = document.getElementById('Soft_Iframe')//Soft_Iframe是iframe的id
var win = ifr.window || ifr.contentWindow
win.FilterSearch()//是iframe里面的js方法,相当于执行子页面的内容。
}
</script>
然后在iframe里面显示的那个页面上写js方法:
<script>
function FilterSearch(){
//这里面写你要获得当前页面元素的信息。
}
</script>