如何从文本中获取div id? 我只从div发现了Text。
<div id="randomdiv">Text</div>
答案 0 :(得分:4)
如果你正在使用jQuery,那么事情真的很容易。
var src = "Text"; // what to look for
$('*:contains("'+src.replace(/\"/g, '\"')+'")') // search all elements containing that text, also replace double quotes because it might break the selector
.filter( function(){
return $(this).text()==src; // check for exact matches (this is slow btw)
})
.first() // retrieve the first element. you have to adjust if you're looking for all elements
.attr('id'); // retrieve the id. this is semantic. it's faster to use [0].id instead of this
如果您不使用jQuery,那么您可能会有30-40行代码。
答案 1 :(得分:4)
var divId = $("div:contains('Text')").attr('id');
alert(divId); //divId is the div's id you need;
答案 2 :(得分:1)
在纯JavaScript中,它实际上也很简单。
这是一个小帮助函数,它返回一个基于搜索字符串的id数组。 如果第二个参数为true,它将执行基本的部分搜索,而不是严格检查。
<强>的Javascript 强>
NodeList.prototype.forEach = Array.prototype.forEach;
function getElementIdsByText(search, partial) {
var elements = document.querySelectorAll("[id]");
var ids = [];
elements.forEach(function(element) {
if (!partial && element.textContent === search) {
ids.push(element.id);
}
if (partial && element.textContent.indexOf(search) !== -1) {
ids.push(element.id);
}
});
return ids;
}
console.log(getElementIdsByText("Text"));
console.log(getElementIdsByText("Fo", true));
<强> HTML 强>
<div id="randomdiv">Text</div>
<div id="randomdiv2">Text</div>
<div id="fooDiv">Foo</div>
<强>输出强>
["randomdiv", "randomdiv2"]
["fooDiv"]
当然您不需要NodeList.prototype.forEach = Array.prototype.forEach;
,您也可以使用slice
方法将其转换为普通数组,但理论上不保证slice
方法(不是我知道这个是不是!)。
答案 3 :(得分:0)
如果你有一个现代浏览器,你可以随时使用XPATH,因为它有 基于内容的搜索。
这是一个例子:
document.evaluate('//*[text()="' + string + '"]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE).snapshotItem(0);
对于旧版浏览器,你可以用类似的东西来填充XPATH http://llamalab.com/js/xpath/
来自:https://stackoverflow.com/a/9558906/2806799
在您的情况下,您可以使用:
document.evaluate('//*[text()="' + string + '"]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE).snapshotItem(0).id;
答案 4 :(得分:-1)
var id = $(":contains('Text')").attr('id');
这将返回包含文本“Text”
的所有元素