ʕ··ཻʔ³ 2023-10-19 09:48 采纳率: 0%
浏览 2

JS 搜索 匹配 添加class

img

基本的JS实现表格搜索内容,代码如下


function myFunction() { //如果有搜索按钮,定义一个onclick即可
  // 声明变量
  var input, filter, table, tr, td, i;
  input = document.getElementById("myInput");
  filter = input.value.toUpperCase(); //toUpperCase()是不区分大小写
  table = document.getElementById("myTable");
  tr = table.getElementsByTagName("tr");
 
  // 循环表格每一行,查找匹配项
  for (i = 0; i < tr.length; i++) {
    td = tr[i].getElementsByTagName("td")[0]; //这个0时要搜索第1列的内容,以此类推
    if (td) {
      if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {  //如果要区分大小写就去掉这个toUpperCase()
        tr[i].style.display = "";
      } else {
        tr[i].style.display = "none";
      }
    } 
  }
}

我的需求是,如果tr里第三个td(就是详细说明那个),不搜索的时候这个td是隐藏的,如果搜索到这个tr得时候,这个td就显示出来,这个代码应该怎么写呢

img


如这个图

  • 写回答

2条回答 默认 最新

  • Leodong. 2023-10-19 09:50
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    你可以在循环中添加一个判断条件,检查子元素是否包含搜索内容。如果包含,则显示该行。以下是修改后的代码:

    function myFunction() {
      filter = input.value.toUpperCase();
      table = document.getElementById("myTable");
      tr = table.getElementsByTagName("tr");
    
      // 循环表格每一行,查找匹配项
      for (i = 0; i < tr.length; i++) {
        td = tr[i].getElementsByTagName("td")[0];
        if (td) {
          let found = false;
          // 检查子元素是否包含搜索内容
          const childDivs = tr[i].getElementsByTagName("div");
          for (let j = 0; j < childDivs.length; j++) {
            if (childDivs[j].innerHTML.toUpperCase().indexOf(filter) > -1) {
              found = true;
              break;
            }
          }
    
          if (found || td.innerHTML.toUpperCase().indexOf(filter) > -1) {
            tr[i].style.display = "";
          } else {
            tr[i].style.display = "none";
          }
        }
      }
    }
    

    这段代码会在遍历表格的每一行时,检查子元素(如<div>)是否包含搜索内容。如果找到匹配的子元素或者当前行的单元格内容包含搜索内容,则显示该行。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    评论

报告相同问题?

问题事件

  • 修改了问题 10月19日
  • 修改了问题 10月19日
  • 创建了问题 10月19日

悬赏问题

  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型
  • ¥15 VB.NET如何绘制倾斜的椭圆