ECMAScript中是否存在DOM元素的本机方法,它允许计算给定元素的所有祖先(直到窗口对象或由Id,Name等指定的DOM元素)?
示例用法是检查给定元素的所有祖先并删除指定的属性。
答案 0 :(得分:1)
答案 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合作)。
任何评论,错误等都将受到高度赞赏。