计算父节点

时间:2014-07-01 14:29:20

标签: javascript ecmascript-5

ECMAScript中是否存在DOM元素的本机方法,它允许计算给定元素的所有祖先(直到窗口对象或由Id,Name等指定的DOM元素)?

示例用法是检查给定元素的所有祖先并删除指定的属性。

3 个答案:

答案 0 :(得分:1)

有节点迭代器(https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator)可以用于此目的

答案 1 :(得分:0)

您可以使用xpath:

document.evaluate('ancestor::*', x, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null)

有关详细信息,请参阅https://developer.mozilla.org/en/docs/Introduction_to_using_XPath_in_JavaScript

答案 2 :(得分:-1)

我写了一个简单的函数来执行问题中描述的操作。它获取给定元素的所有祖先,并从"开始"之间的每个元素中删除给定属性。和"结束" element(它不会在"结束"元素上执行removeAttribute方法)。

   var modifyAncestors = function(startingelementid,endingelementId,searchedattribute) {
        var nodecount = document.getElementById(endingelementId).childNodes.length;
        console.log(nodecount);
        var currentid = startingelementid;
        console.log(currentid);
        console.log(searchedattribute); 
        for(var i = 0; i < nodecount; i++) {
            if(currentid == endingelementId) {
            break;
            }
            else {
            document.getElementById(currentid).removeAttribute(searchedattribute);
            currentid = document.getElementById(currentid).parentNode.id;   
            }
        }               
    }

工作示例:http://www.blacktieseo.com/so/js/test.html(无法与Fiddle JS合作)。

任何评论,错误等都将受到高度赞赏。