循环遍历对象的子对象,直到找到具有属性X的锚点

时间:2013-11-05 19:59:36

标签: javascript

说我有一个DOM元素。

我如何在 Javascript 中查看该元素是否有任何子元素(或子元素子元素)是<a>元素,其href属性为{{1} }?如果是这样,返回哪个级别(深度)呢?

到目前为止,我有这个:

'/'

我怎样才能找到孩子的孩子?

2 个答案:

答案 0 :(得分:1)

怎么样:

function getLevelOfAnchorWithAttrX (element, attr) {
    var anchor = element.querySelector('a[href="' + attr + '"]');
    if (anchor) {
        var level = 1;
        var levelElement = anchor
        while (levelElement.parentElement !== element) {
            level++;
            levelElement = levelElement.parentElement;
        }
        return level;
    }
}

Lookey here

答案 1 :(得分:0)

使用递归函数:

function traverseChildren(el, depth) {
  depth = depth || -1;
  for (var i=0; i < el.children.length; i++) {
    if (children[i].nodeName == 'A' && children[i].href == '/') {
      return ++depth;
    }
    else if (el.children.length > 0) {
      depth = traverseChildren(el, ++depth);
    }
  }
  return depth;
}

var depth = traverseChildren(element, depth);
if (depth != -1) {
  console.log('a element found at ' + depth + ' levels deep');
}
else {
  console.log('no a element found');
}