短暂的一点是我正在使用javascript中的小型库来替换< div src =“somesite”>< / div>使用指定来源的内容。这将允许编码人员创建动态页面而无需在服务器端执行更多工作,而不会烦恼使用iframe。
我需要的是一种有效的方法来获取具有src属性的分支的最顶部div节点。 E.G:
<div src="somesite/pagelet.htm" id="div1">
<div src="somesite/fallback.htm" id="div2"></div>
</div>
<div src="somesite/pagelet2.htm" id="div3"></div>
我想检索#div1和#div3并忽略#div2直到稍后。目前我正在使用以下功能,但我想知道是否有更有效的方法来做到这一点:
function getRootElementsByAttribute(rootEle, tag, attr) {
try {
tag = tag.toLowerCase();
if (rootEle.tagName.toLowerCase() === tag && rootEle.hasAttribute(attr)) {
return [rooEle]
}
var eles = rootEle.getElementsByTagName(tag),
nodes = [], ele, isRoot, eleParent, a;
for (a=0; a<eles.length; a++) {
ele = eles[a];
if (ele.hasAttrinute(attr)) {
isRoot = true;
eleParent = ele;
while ((eleParent = eleParent.parentNode)) {
if (eleParent.tagName.toLowerCase() === 'div' && eleParent.hasAttribute(attr)) {
isRoot = false;
break;
}
}
if (isRoot == true) nodes.push(ele)
}
}
}catch(e){}
return nodes;
}
请不要回答建议使用图书馆。导入整个库时,导入整个库似乎有点过分了吗?这个单一函数
答案 0 :(得分:0)
您可以尝试使用XPath表达式来获取具有属性source的所有根div,使用类似下面的XPath表达式:
/div[@src]
/ div选择根级别的所有div。对于文档中的所有div,使用// div。 [@src]指定您只希望节点包含&#39; src&#39;属性。
var xmlDoc = //load your document here
var xpath = "/div[@src]"
var nodes = xmlDoc.evaluate(xpath, xmlDoc, null, XPathResult.ANY_TYPE,null);