You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript分节文本搜索功能获取对应节号的实现方法咨询

实现方案

你只需要在遍历段落的过程中维护一个当前节号变量,每次遇到带节号的段落就更新该变量,匹配到内容时直接取当前的节号存储即可,修改后的完整代码如下:

function srch() {
  var input, currentVerseNr, p, cache1, resultEl;
  input = "MTV";
  currentVerseNr = ""; // 存储当前所属的节号
  cache1 = [];
  resultEl = document.getElementById('reslt');
  p = document.getElementsByTagName('p');
  // 清空上次搜索结果
  resultEl.innerHTML = "";

  for (let i = 0; i < p.length; i++) {
    // 先判断当前段落是否带节号,有则更新当前节号
    const verseNrEl = p[i].querySelector('.verse-nr');
    if (verseNrEl) {
      currentVerseNr = verseNrEl.textContent.trim();
    }
    // 匹配关键词逻辑
    if (p[i].innerHTML.indexOf(input) > -1) {
      // 同时存储节号和内容
      cache1.push({
        verse: currentVerseNr,
        content: p[i].innerHTML
      });
    }
  }

  if (cache1.length > 0) {
    for (let i = 0; i < cache1.length; i++) {
      // 输出时带上节号,格式可按需调整
      resultEl.innerHTML += `[节${cache1[i].verse}] ${cache1[i].content}<br>`;
    }
  } else {
    resultEl.innerHTML = "未找到匹配内容";
  }
}

改动说明

  • 新增currentVerseNr全局跟踪当前节号,无论当前段落是否匹配关键词,只要遇到带节号的首行就更新该值,保证后续无节号的段落继承到正确的节号
  • 结果数组从仅存文本改为存储对象,同时保留节号和内容,方便后续如果要对结果做分类、筛选等扩展操作
  • 新增搜索前清空上次结果的逻辑,避免多次搜索结果叠加
  • 新增无匹配结果的提示,展示格式可根据需求自行调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:15:01