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

如何在Cordova Android应用单页面中实现可搜索div内容的搜索栏

实现方案

实现思路

  • 基于纯原生JS实现,无额外第三方依赖,完美适配Apache Cordova Android环境
  • 逻辑核心:监听搜索框输入事件,遍历所有卡片容器,提取卡片内h6标签的文本内容,与用户输入的关键词做大小写不敏感的模糊匹配,匹配成功的卡片保留显示,匹配失败的卡片隐藏

步骤1:添加搜索栏HTML代码

放在所有卡片列表的上方,适配现有Bootstrap样式:

<div class="container my-3">
  <input type="text" id="searchInput" class="form-control" placeholder="输入物种名称搜索...">
</div>

步骤2:添加搜索功能JS代码

建议放在页面底部,或者JS文件中:

// 等待DOM加载完成后执行逻辑
document.addEventListener('DOMContentLoaded', function() {
  // 获取搜索框元素
  const searchInput = document.getElementById('searchInput');
  // 获取所有卡片外层容器
  const allCards = document.querySelectorAll('.caixa');

  // 监听搜索框输入事件
  searchInput.addEventListener('input', function() {
    // 去除关键词首尾空格,转小写实现大小写不敏感搜索
    const keyword = this.value.trim().toLowerCase();

    // 遍历所有卡片做匹配判断
    allCards.forEach(card => {
      // 提取当前卡片内h6的文本内容,统一转小写
      const cardTitle = card.querySelector('h6.sp').textContent.trim().toLowerCase();
      
      // 关键词为空时显示所有卡片,否则只显示匹配到的卡片
      card.style.display = (keyword === '' || cardTitle.includes(keyword)) ? 'block' : 'none';
    });
  });
});

Cordova环境适配注意事项

  • 如果需要严格遵循Cordova生命周期,可将上述逻辑中的DOMContentLoaded事件替换为Cordova官方的deviceready事件,避免页面未加载完成就执行JS:
document.addEventListener('deviceready', function() {
  // 把上述搜索逻辑放在这里即可
}, false);
  • 本实现仅调用原生Web API,所有安卓版本的Cordova WebView均可正常运行
  • 若后续需要扩展搜索范围,比如同时匹配科名、俗名等其他字段,只需要修改文本提取逻辑,将多个字段的文本拼接后再做匹配即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:45:04