javascript下查找父节点的简单方法

 更新时间:2007年08月13日 19:16:18   作者:  
<div>
       <a href="#">标题</a>
       <ul id="demo">
           <li><a href="#" onclick="selectThisItem(this)">项目一</a></li>
               <ul>
                   <li><a href="#" onclick="selectThisItem(this)">子类一</a></li>
                   <li><a href="#" onclick="selectThisItem(this)">子类二</a></li>
               </ul>
           <li><a href="#" onclick="selectThisItem(this)">项目一</a></li>
           <li><a href="#" onclick="selectThisItem(this)">项目</a></li>
       </ul>
</div>


上面的代码中,在点击项目或子类时,因为触发的事件一样,参数也一样,能区别用户点击的到底是“项目x”还是“子类x”,除了this.innerHTML来判断它们的内在文字外,还可以根据它们在以<ul id="demo">元素为根节点的xml文档中的纵向位置(节点深度)来区别,比如“项目一”在<ul id="demo">中的节点深度是2,“子类一”的节点深度是4.

计算节点深度在排除递归方法后,找到了一个更为简单的方法:



function parentIndexOf(node,parent){
   if(node==parent){return 0;}
   for (var i=0,n=node; n=n.parentNode; i++){
       if(n==p){return i;}
       if(n==document.documentElement){return -1;} //找不到目标父节点,防止死循环
   }
}


函数的返回值是索引数字,如果入口节点与查找的父节点相同(即同一个元素),返回值为0,向上循环找到父节点后返回向上查找的节点级数,如果向上查找,到了整个页面的根节点,比如是<html>,还找不到,就返回-1,并结束循环。

返回值与String对象内置的indexOf方法相似。函数的关键是for的第二个参数n=n.parentNode,感觉比较巧妙。

相关文章

  • javascript实现json页面分页实例代码

    javascript实现json页面分页实例代码

    这篇文章主要介绍了javascript实现json页面分页实例代码,需要的朋友可以参考下
    2014-02-02
  • jquery SweetAlert插件实现响应式提示框

    jquery SweetAlert插件实现响应式提示框

    为了满足用户体验度,使用SweetAlert插件实现响应式提示框效果非常好,下面通过这篇文章给大家介绍jquery SweetAlert插件实现响应式提示框,需要的朋友可以参考下
    2015-08-08
  • ES6中异步对象Promise用法详解

    ES6中异步对象Promise用法详解

    这篇文章主要介绍了ES6中异步对象Promise用法,对比ES5分析了ES6异步方法Promise的使用技巧,并结合实例形式分析了连续使用Promise对象、Promise捕获错误的catch()、以及Promise的高级用法,需要的朋友可以参考下
    2019-07-07
  • 微信小程序实现一个简单swiper代码实例

    微信小程序实现一个简单swiper代码实例

    这篇文章主要介绍了微信小程序实现一个简单swiper代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • JS 的继承方式与使用场景对比分析

    JS 的继承方式与使用场景对比分析

    本文介绍了JavaScript中六种主要的继承实现方式及其适用场景,并推荐在现代项目中优先使用ES6的class继承,每种继承方式都有其特点和适用范围,选择合适的继承方式对于编写清晰、高效的JavaScript代码至关重要,感兴趣的朋友一起看看吧
    2025-02-02
  • 探索JavaScript中私有成员的相关知识

    探索JavaScript中私有成员的相关知识

    这篇文章主要介绍了探索JavaScript中私有成员的相关知识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • 十分钟教你上手ES2020新特性

    十分钟教你上手ES2020新特性

    这篇文章主要介绍了十分钟教你上手ES2020新特性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • JavaScript中判断整字类型最简洁的实现方法

    JavaScript中判断整字类型最简洁的实现方法

    这篇文章主要介绍了JavaScript中判断整字类型最简洁的实现方法,本文给出多个判断整数的方法,最后总结出一个最短、最简洁的实现方法,需要的朋友可以参考下
    2014-11-11
  • 兼容Firefox的Javascript XSLT 处理XML文件

    兼容Firefox的Javascript XSLT 处理XML文件

    这篇文章主要介绍了兼容Firefox的Javascript XSLT 处理XML文件,需要的朋友可以参考下
    2014-12-12
  • 在CSS里写复杂的JavaScript脚本

    在CSS里写复杂的JavaScript脚本

    在IE下,CSS里可以写入JavaScript脚本,不过,要用expression套住. 虽然可以这样,但是由于是在CSS里,这个特殊地方,所以,不能写成如下这样: width:expression(if(...){}else{...})
    2008-04-04

最新评论