js 获得某节点的子节点,已知该子节点为div

js 获得某节点的子节点,已知该子节点为div,第1张

我试过了,有作用的,你要么就委派事件,如果还不可以的话,delegate知道吧???

<!DOCTYPE HTML>

<html>

<head>

<meta charset=UTF-8>

<meta name="keywords" content="节点,有的,元素,对象,兄弟">

<title>白菜编辑部</title>

<style type="text/css">

</style>

<script type="text/javascript" src="jquery-180minjs"></script>

<script type="text/javascript">

jQuery (function ($)

    {

    $ ('body')append ('<div class="out"><a></a><h1></h1><div class="btn">btnbtnbtn</div></div>');

    $ ('divout')mouseover (function ()

    {

    $ ('btn')show ();

    })mouseout (function ()

    {

    $ ('btn')hide ();

    });

    });

</script>

</head>

<body>

</body>

</html>

我们仅仅知道用户点击的那一条数据,所以这条数据必须是唯一的才能构建一颗唯一的树结构,如果后端给不到你唯一的值,一定要让他给你生成一个唯一值id

我采用的string切割插入值

table初始化进来只有一层,并且是固定的

此时生成的是

//传入参数:需要遍历的对象,需要匹配的id,获取所有的父级节点的Id

        function findIdList(data2, id, children = 'children', level = 0) {

  var arrRes = [];

  let obj = {

      id: 0,

      [children]: data2

  }

  let rev = (data, id, level) => {

    if (!data || !data[children] || !data[children]length) {

      return;

    }

    for (var i = 0; i < data[children]length; i++) {

      let item = data[children][i];

      if (itemid == id) {

        // 将匹配到的结果保存到数组

        arrResunshift({ level, activeId: itemid });

        // 递归它的父级

        rev(obj, dataid, 0);

        break;

      } else if (item[children] && item[children]length > 0) {

        //如果有子集,则把子集作为参数重新执行本方法

        rev(item, id, level + 1);

      }

    }

  };

  rev(obj, id, level);

  return arrRes;

}

let list = [

    {id: 1, children: [

        {id: 11, children: [{id: 12}]}

    ]},

    {id: 2, children: [{id:21, children: [{id: 31}]}]}

]

let b = findIdList(list, 21)

consolelog(b) // [ { level: 0, activeId: 2 }, { level: 1, activeId: 21 } ]

1、用 childNodes 属性,按顺序取

实现过程:首先创建一个 xml 对象,然后载入 xml 文件,再根据待取节点父节点在 xml 文件中的序号和本身的序号,确定待取节点的位置,最后返回待取节点的值。

//pId 待取节点父节点序号

//cId 待取节点序号

function getXmlNodeValue(pId, cId) {

    var xmlDoc = new ActiveXObject("MicrosoftXMLDOM");

    xmlDocasync = false;

xmlDocload("employeeInfoxml");

var nodes = xmlDocdocumentElementchildNodes[pId]childNodes[cId];return nodeschildNodes[0]text;

}

调用方法:alert(getXmlNodeValue(1, 2));

2、用 for 循环来取

实现过程:首先创建一个 ie 支持的 xml 对象,如果发生异常,是创建一个 FireFox 支持的空 xml 对象并返回空;然后载入 xml 文件,如要发生异常也返回空;最后,通过 for 循环遍历查找与传入的节点值相同的节点,找到后返回属于该节点的属性值。

//nodeValue 待取节点的所属节点值

function getXmlNodeValueFor(nodeValue){    

    var xmlDoc; 

  try { 

    //创建一个 ie 支持的 XML 文档对象 

    xmlDoc = new ActiveXObject("MicrosoftXMLDOM");

  }catch(e){

      try{

      //创建FireFox空的XML文档对象

      xmlDoc=documentimplementationcreateDocument("","",null);

}catch(e){

  alert(emessage);

  return "";

}

}

xmlDocasync = false;

try { 

    xmlDocload("employeeInfoxml");

}catch(e){

    alert(emessage);

    return "";

}

var xd=xmlDocdocumentElementchildNodes;

if(xd==null) 

    return "";

 var tempValue;

for(var i=0;i<xdlength;i++){

    if(xd[i]childNodes[0]childNodes[0]nodeValue==nodeValue)        tempValue=xd[i]childNodes[2]childNodes[0]nodeValue;

}

return tempValue;

}

调用方法:alert(getXmlNodeValueFor("王佳琳"));

$('#id')siblings() 当前元素所有的兄弟节点

$('#id')prev() 当前元素前一个兄弟节点

$('#id')prevaAll() 当前元素之前所有的兄弟节点

$('#id')next() 当前元素之后第一个兄弟节点

$('#id')nextAll() 当前元素之后所有的兄弟节点

这三个方法都可以添加选择器,给出选择条件,就能找到你指定的兄弟节点了。

(1)如获得id为test标签子元素的个数:

documentgetElementById("test")ChildNodeslength

documentgetElementById('test')childrenlength

(2)上面两种方法皆可来获得子元素的个数,但是要注意各个浏览器的差异性,也得斟酌下差异性

以上就是关于js 获得某节点的子节点,已知该子节点为div全部的内容,包括:js 获得某节点的子节点,已知该子节点为div、JS树结构生成与获取到根节点的路径、JS根据子节点递归获取所有父节点的集合等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9524019.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存