<div id="p-node"> <div id="c-node">123</div> </div>
function fixContains(a,b){ //a参数是节点,b是a下面的子节点 // 因为要使用parentNode节点遍历的方法(IE8以下不支持parentNode),所以我们使用try..catch来捕获错误 try{ while((b=b.parentNode)){ //将b节点的父节点赋给b if (b===a) { return true; } } // if(a===b.parentNode){ // return ture; // } return false;//循环体内如果不成立,返回false }catch(e){ return false; //这里因为IE8一下不支持parentNode,所以将这个错误捕获,返回一个false } } var pNode=document.getElementById("p-node"); var cNode=document.getElementById("c-node"); var text=cNode.childNodes[0]; alert(fixContains(pNode,cNode));//true
为什么IE8以下不支持parentNode,try..catch捕获这个错误之后不应该返回false吗?怎么在IE8下也会正常返回true呢
相关分类