我希望通过基于属性值的javascript获取元素,根据示例我想通过属性“doc-cid”获取元素,并且“doc-cid”的值是动态的。
<p align="center" style="font-family:times;" doc-cid="11303">
<font size="2" doc-cid="11304">55</font></p>
<p id="demo">Click the button to change the text of a list item.</p>
<button onclick="myFunction()">Try it</button>
<script>
function myFunction()
{
var list = document.getElementsByTagName("doc-cid=\"11303\"")
alert(list.getAttribute("doc-cid"));
}
</script>
答案 0 :(得分:1)
我将首先介绍一下上述代码,并提供解决方案。
<强> POINTERS 强>
<强>解强>
function getElementByAttribute (attribute, value, start) {
var start = start || document,
cache, //store found element
i;
function lookup(start) {
// if element has been found and cached, stop
if (cache) {
return;
} else if (start.getAttribute(attribute) === value) { // check if current element is the one we're looking for
cache = start;
return;
} else if (start.childElementCount > 0) { // if the current element has children, loop through those
lookup(start.children[0]);
} else if (start.nextElementSibling) { // if the current element has a sibling, check it
lookup(start.nextElementSibling);
} else {
return;
}
}
lookup(start);
return cache;
}
你只需给函数你正在查找的属性名称,你需要匹配的值和查找的起始点(如果没有指定起始点,它将从你页面的最开始开始(慢得多) )。 以下是您的标记示例:
// you have no easy to get starting point, so we'll traverse the DOM
getElementByAttribute('doc-cid', '11303');
如果你想从一个更好的节点开始,你可以添加一个包装div元素并给它 id =“wrapper”然后你可以按如下方式调用该函数:
var start = document.getElementById('wrapper');
getElementByAttribute('doc-cid', '11303', start);
希望这有帮助。