You need to enable JavaScript to run this app. 使用XPathResult查询包含指定文本p元素时首个匹配结果不显示问题
优惠活动
大模型
产品
解决方案
定价
更多

使用XPathResult查询包含指定文本p元素时首个匹配结果不显示问题

问题原因
  • 进入while循环前,你已经通过headings.iterateNext()获取到了第一个匹配的<p>元素并赋值给thisHeading,但进入循环后第一行代码又重复调用了一次headings.iterateNext(),直接跳过了第一个匹配结果,取到了第二个元素,因此第一个符合条件的元素没有被设置为显示。
  • 额外补充:当迭代到最后一个元素后,iterateNext()会返回null,原有代码中直接对null调用$(thisHeading).css()还会抛出控制台报错。
修复方案

调整循环内的执行顺序,先处理当前拿到的元素再取下一个迭代结果即可,修复后的JS代码如下:

queryResult = 1;

function testQuery() {
    queryResult = "hello";
    if (queryResult == "") {
        return false;
    }
    $("p").css("display", "none");
    var headings = document.evaluate("//p[contains(., '" + queryResult + "')]", document, null, XPathResult.ANY_TYPE, null);
    var thisHeading = headings.iterateNext();
    while (thisHeading) {
        // 先处理当前匹配元素
        $(thisHeading).css("display", "block");
        // 处理完成后再取下一个迭代结果
        thisHeading = headings.iterateNext();
    }
}

内容的提问来源于stack exchange,提问作者SoaringGecko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 05:06:03