如何根據包含的字符串獲取元素ID?通過字符串獲取元素ID它包含使用純正的Javascript
<span id="th67">This the string I need to match</span>
我無法使用JQuery或任何其他Javascript庫來做到這一點。
我需要做一個硒測試。
我沒有意識到如果沒有我的圖書館,我在JS中沒用!
謝謝大家的幫助。
如何根據包含的字符串獲取元素ID?通過字符串獲取元素ID它包含使用純正的Javascript
<span id="th67">This the string I need to match</span>
我無法使用JQuery或任何其他Javascript庫來做到這一點。
我需要做一個硒測試。
我沒有意識到如果沒有我的圖書館,我在JS中沒用!
謝謝大家的幫助。
好吧,如果你知道你要找什麼樣的標籤對,你可以做:
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查詢,我猜。
這裏有一個簡單的遞歸函數,將做到這一點:
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
,或者是其ID的DOM節點你可以得到target.id
。
如果你的目標支持的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
}
那很優雅。任何方式我可以得到所有包含一個字符串的元素?我試過'while(myElement = getElementByText(searchString))',但它似乎產生了一個無限循環。 – 2016-04-25 10:43:20
謝謝,這很好地工作。 – Kay 2011-04-24 19:36:32