有效地走DOM树,检查nodeType和属性?

时间:2016-05-23 05:11:25

标签: javascript html algorithm recursion

尝试考虑一种检查给定节点的所有祖先的有效方法,可能使用TreeWalker?

具体来说,我想查看任何nodeType是<input>还是<textarea>,还是contenteditable="true",如果任何祖先匹配,则返回true。

递归函数很好!

1 个答案:

答案 0 :(得分:1)

您可以执行简单的迭代树爬升以获得所需的结果。

function findParentNodes(node) {
  var parent = node.parentNode;
  while(parent) {
    if( parent.nodeName === 'INPUT' || 
        parent.nodeName === 'TEXTAREA' || 
        parent.getAttribute('contenteditable') === 'true') {

        return true;
    }

    parent = parent.parentNode;
  }
  return false;
}