JS根据子节点递归获取所有父节点的集合

JS根据子节点递归获取所有父节点的集合,第1张

//传入参数:需要遍历的对象,需要匹配的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 } ]

看你的span 是怎么生成的,

动态生成的话,比如:

for (i=0;i<5;i++)

documentwrite("<span id='s"+i+"' onclick='f("+i+")'>Span "+i+"</span>")

再写个f(n) 函数, 通过参数n来判断就行了嘛

思路:先找到所有red类的对象集合:obj_div

然后取含有绿色的那个:div_hg

然后找到这个里面的最后一个孩子(green)

1、找到对象集合 var obj_div = documentgetElementsByClassName("red");

2、取出含有绿色的那个div_hg: var div_hg = obj_div[obj_divlength-1];

3、得到最后div里面的最后一个孩子:var green = div_hgChildren[div_hgChildren-1]

具体代码和验证自己做吧,只是大体的思路。

不知道是不是要实现这个,有理解错的地方,可以留言

Js代码 收藏代码

var Cts = "bblText";

if(CtsindexOf("Text") > 0 )

{

alert('Cts中包含Text字符串');

}

indexOf用法:

返回 String 对象内第一次出现子字符串的字符位置。

strObjindexOf(subString[, startIndex])

参数

strObj

必选项。String 对象或文字。

subString

必选项。要在 String 对象中查找的子字符串。

starIndex

可选项。该整数值指出在 String 对象内开始查找的索引。如果省略,则从字符串的开始处查找。

说明

indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回 -1。

如果 startindex 是负数,则 startindex 被当作零。如果它比最大的字符位置索引还大,则它被当作最大的可能索引。

从左向右执行查找。否则,该方法与 lastIndexOf 相同。

示例

下面的示例说明了 indexOf 方法的用法。

function IndexDemo(str2){

var str1 = "BABEBIBOBUBABEBIBOBU"

var s = str1indexOf(str2);

return(s);

}

对于JavaScript的indexOf忽略大小写

JavaScript中indexOf函数方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回 -1。如果 startindex 是负数,则 startindex 被当作零。如果它比最大的字符位置索引还大,则它被当作最大的可能索引。

indexOf函数是从左向右执行查找。否则,该方法与 lastIndexOf 相同。

下面的示例说明了indexOf函数方法的用法。

Js代码 收藏代码

function IndexDemo(str2){

var str1 = "BABEBIBOBUBABEBIBOBU"

var s = str1indexOf(str2);

return(s);

}

var a_arr = documentgetElementById("demo")getElementsByTagName("a");这就是找到所有demo下的a,返回的是数组

以上就是关于JS根据子节点递归获取所有父节点的集合全部的内容,包括:JS根据子节点递归获取所有父节点的集合、JS如何获取标签集合中某个标签的上一个标签索引、js怎么选择相同类名的父级的的子集等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存