首页 > 解决方案 > 特定字符串的搜索类

问题描述

我有这个 HTML 片段。 <div class="text">helloworld</div>

因此,当在该类中找到该字符串时,我想在“文本”类中搜索特定字符串。执行一个函数,但前提是找到字符串,如果没有找到字符串,则简单地打印console.log('not found.'),如果它只是简单地打印它。

我的代码如下所示。

var timerVar = setInterval (function() {DoMeEverySecond (); }, 2000); // << set to 2 seconds.

function DoMeEverySecond ()
{
var xpathResult = document.evaluate("(//text()[contains(., 'helloworld')]) [1]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
var node=xpathResult.singleNodeValue;
if (node==null)
console.log('Not found')
else
console.log('found');
}

此代码有效,但它搜索所有类。我只想搜索“文本”类

标签: javascriptjqueryhtmlxpath

解决方案


请检查下面的代码,首先你找到所有的节点(参考这个问答)与类 contains 'text'。之后检查每个节点是否包含单词'helloworld'

function getElementsByXPath(xpath, parent)
{
    let results = [];
    let query = document.evaluate(xpath, parent || document,
        null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    for (let i = 0, length = query.snapshotLength; i < length; ++i) {
        results.push(query.snapshotItem(i));
    }
    return results;
}

function DoMeEverySecond ()
{
	var nodes = getElementsByXPath("//*[contains(@class,'text')]", document);
	for(var i =0; i< nodes.length; i++){
		var xpathResult = document.evaluate("(text()[contains(., 'helloworld')]) [1]", nodes[i], null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
		var node=xpathResult.singleNodeValue;
		if (node==null)
			console.log('Not found')
		else
			console.log('found');
	}
	
}

var timerVar = setInterval (function() {DoMeEverySecond (); }, 2000); // << set to 2 seconds.


推荐阅读