如何根据其中包含的字符串获取元素ID?
<span id="th67">This the string I need to match</span>
我无法使用JQuery或任何其他Javascript库来执行此操作。
我需要进行硒测试。
如果没有我的库,我没有意识到我在JS中是多么无用!
感谢大家的帮助。
答案 0 :(得分:7)
如果您要定位的浏览器支持XPath,则可以执行简单的XPath查询:
// Find an element by the text it contains, optionally
// starting at specified parent element.
function getElementByText( text, ctx)
{
return document.evaluate("//*[.='"+text+"']",
ctx || document, null, XPathResult.ANY_TYPE, null).iterateNext();
}
然后运行
var myElement = getElementByText( "This is the string I need to match" );
if ( myElement )
{
// do something with myElement.id
}
答案 1 :(得分:6)
好吧,如果你知道你正在寻找什么样的标签,你可以这样做:
var spans = document.getElementsByTagName('span'), targetId;
for (var i = 0; i < spans.length; ++i) {
if (spans[i].innerText === stringToMatch) {
// found it ...
targetId = spans[i].id;
break;
}
}
if (targetId) {
// ... do whatever ...
}
如果你想得到想象,你可以构建一个xpath查询,我想。
答案 2 :(得分:3)
这是一个简单的递归函数:
function findByText(node, text) {
if(node.nodeValue == text) {
return node.parentNode;
}
for (var i = 0; i < node.childNodes.length; i++) {
var returnValue = findByText(node.childNodes[i], text);
if (returnValue != null) {
return returnValue;
}
}
return null;
}
将其用作:
var target = findByText(document, "This the string I need to match");
这最终会导致target
为null
,或者它是一个DOM节点,您可以使用target.id
获取其ID。