首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在不显示html标记的情况下从输入中筛选和标记单词?

如何在不显示html标记的情况下从输入中筛选和标记单词?
EN

Stack Overflow用户
提问于 2020-04-04 05:17:49
回答 3查看 148关注 0票数 2

我正在尝试从网页中过滤和标记word,Sajeeb add慷慨地帮助我编写了一段完全符合我要求的代码,但是当我在清除输入框时添加和其他元素标记(如列表项或标题标记)时,它会显示HTML标记。

代码语言:javascript
运行
AI代码解释
复制
$(document).ready(function() {
  $("#myInput").on("keyup", function() {
    var value = $(this).val().toLowerCase();
    $("#myDIV>*").map(function() {
      var el = $(this);
      var content = el.html().replace(/(<span class="highlighted">)|(<\/span>)/g, "");
      el.html(content);
      var hasText = el.text().toLowerCase().indexOf(value) > -1;
      el.toggle(hasText);
      if (hasText) {
        // escape value for use in regex
        var textRegex = new RegExp(value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g");
        el.html(content.replace(textRegex, '<span class="highlighted">$&</span>'));
      }
    });
  });
});
代码语言:javascript
运行
AI代码解释
复制
.highlighted {
  background-color: yellow;
}
代码语言:javascript
运行
AI代码解释
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input id="myInput" />
<!-- the new search -->
<div id="myDIV">
  <p>This is a test</p>

  <ul>
    <li>This is a list item</li>
    <li>This is a another list item</li>
  </ul>

  <a href="">This is a link</a>

</div>

这段代码,它只接受一个段落标签。有人知道为什么吗?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-04 05:27:18

它使用id 'myDIV‘在第一级(不是很深)处理元素中的任何元素,因为您使用的是这个选择器$("#myDIV>*")。确保您的标签在此规则中。

具有新信息的更新

代码语言:javascript
运行
AI代码解释
复制
$(document).ready(function() {
  $("#myInput").on("keyup", function() {
    var value = $(this).val().toLowerCase();
    
    // Remove all class="highlighted" inside #myDIV 
    $("#myDIV").html($("#myDIV").html().replace(/(<span class="highlighted">)|(<\/span>)/g, ""))
    
    $("#myDIV *").map(function() {
        var el = $(this);
        // Only in deep children aplly your logic
        if (el.children().length == 0) {
        var content = el.html().replace(/(<span class="highlighted">)|(<\/span>)/g, "");
        el.html(content);
        var hasText = el.text().toLowerCase().indexOf(value) > -1;
        el.toggle(hasText);
        if (hasText) {
          // escape value for use in regex
          var textRegex = new RegExp(value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g");
          el.html(content.replace(textRegex, '<span class="highlighted">$&</span>'));
        }
      }
    });
  });
});
代码语言:javascript
运行
AI代码解释
复制
.highlighted {
  background-color: yellow;
}
代码语言:javascript
运行
AI代码解释
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input id="myInput" />
<!-- the new search -->
<div id="myDIV">
  <p>This is a test</p>

  <ul>
    <li>This is a list item</li>
    <li>This is a another list item</li>
  </ul>

  <a href="">This is a link</a>

</div>

你需要在深孩子身上应用改变。并删除开始时的类高亮显示。

票数 1
EN

Stack Overflow用户

发布于 2020-04-04 14:47:48

最干净的方法是rest divstart again。所以在开始之前,我选择了snapshot of divsave it。每次数据change i reconstruct它。易于理解和缩放。

建议:用户界面应该是数据驱动的.不是HTML/内容驱动的。您可以创建一个数据列表,并对每个更改进行构造。

检查了我的第二个示例

不改变状态/UIReact

代码语言:javascript
运行
AI代码解释
复制
$(document).ready(function () {
  const div = $("#myDIV").html();
  $("#myInput").on("keyup", function () {
    var value = $(this).val().toLowerCase();
    $("#myDIV").html(div); //Reset
    const p = $("#myDIV p");
    var hasText = p.text().toLowerCase().indexOf(value) > -1;
    hasText && highlight(p, value);
    $("#myDIV li").map(function () {
      var el = $(this);
      var hasText = el.text().toLowerCase().indexOf(value) > -1;
      if (hasText) {
        highlight(el, value);
      } else {
        el.remove();
      }
    });
  });
});
function highlight(elm, text) {
  elm.html(
    elm
      .html()
      .replace(new RegExp(`(${text})`), '<span class="highlighted">$1</span>')
  );
}
代码语言:javascript
运行
AI代码解释
复制
.highlighted {
  background-color: yellow;
}
代码语言:javascript
运行
AI代码解释
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input id="myInput" />
<!-- the new search -->
<div id="myDIV">
    <p>This is a test</p>
    <ul>
        <li>This is a list item</li>
        <li>This is a another list item</li>
    </ul>
    <a href="">This is a link</a>
</div>

使用数据驱动方法的.

代码语言:javascript
运行
AI代码解释
复制
$(document).ready(function () {
  const list = ["This is a list item", "This is a another list item"];
  function buildUi(keyword) {
    $("#filter .list").html("")
    list.forEach((text) => {
      if (!keyword || text.toLowerCase().indexOf(keyword) !== -1) {
        text = text.replace(
          new RegExp(`(${keyword})`),
          '<span class="highlighted">$1</span>'
        );
      } else {
        return;
      }
      const li = $(`<li>${text}</li>`);
      $("#filter .list").append(li);
    });
  }
  buildUi("");
  $("#myInput").on("keyup", function () {
    const keyword = $(this).val().toLowerCase()
    buildUi(keyword)
  });
});
代码语言:javascript
运行
AI代码解释
复制
.highlighted {
  background-color: yellow;
}
代码语言:javascript
运行
AI代码解释
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input id="myInput" />
<!-- the new search -->
<div id="filter">
    <p>This is a test</p>
    <ul class="list">
    </ul>
    <a href="">This is a link</a>
</div>

票数 1
EN

Stack Overflow用户

发布于 2020-04-07 08:55:42

嗨,伙计们,我找到了我要找的东西,感谢这里的大人物们的帮助和大量的头部敲击,这个脚本适用于本地网页搜索和筛选,它必须与jsquery mini和hilitor.js文件一起运行。这对外面的人来说应该是有价值的。很高兴编码的家伙。

代码语言:javascript
运行
AI代码解释
复制
<script src="../js/hilitor.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
window.addEventListener("DOMContentLoaded", function(e) {
    var myHilitor2 = new Hilitor("playground");
    myHilitor2.setMatchType("left");
    document.getElementById("keywords").addEventListener("keyup", function(e) {
      myHilitor2.apply(this.value);
    }, false);
  }, false);
$(document).ready(function(){
  $("#keywords").on("keyup", function() {
    var value = $(this).val().toLowerCase();
    $("#playground *").filter(function() {
      $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
    });
  });
});
</script>
代码语言:javascript
运行
AI代码解释
复制
<label>Search And Filter</label><input id="keywords" type="text" placeholder="Search And Filter.." onKeyDown="if(event.keyCode === 32) return false;">

<div id="playground" > 
<ul>
 <li>Hey diddle diddle,</li>
<li>The cat and the fiddle,</li>
<li>The cow jumped over the moon.</li>
<li>The little dog laughed to see such sport,</li>
<li>And the dish ran away with the spoon.</li>
 </ul>
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61028684

复制
相关文章
HTML布局标记和列表标记
首先要介绍的布局标记是div标记,div可以做网页的层也可以做网页的分区。当div做网页的层时可以实现漂浮在网页上的效果,就像我们经常可以在网站里看见的那些漂浮广告。div做网页的分区时,则是可以布置网页的格局,把一个网页分为多个模块,由这些模块结构来构建出一个网页。
端碗吹水
2020/09/23
4.2K0
HTML布局标记和列表标记
HTML中的标记
文章目录 前言 块级元素 行内元素 行内块级元素 ---- 前言 HTML中的标记 块级元素 h1-h6>>1-6级标题 p>>段落 div>>定义文档中的节 ul>>定义无序列表 ol>>定义有序列表 li>>定义无序列表与有序列表中的项 hr>>水平线 address>>定义文档作者或拥有者的联系信息 blockquote>>定义长的引用 pre>>定义预格式文本 form>>定义表单 fieldset>>定义围绕表单中元素的边框 legend>>定义 fieldset 元素的
MIKE笔记
2023/03/23
5.7K0
HTML多媒体标记与框架标记
在html中可以使用多媒体标记来在网页上播放音频文件,或者显示一些好看的图片用来装饰网页。Flash文件也可以通过相应的标记显示在网页上,<video>标签是用于在网页上播放视频文件的。
端碗吹水
2020/09/23
3.1K0
HTML多媒体标记与框架标记
HTML标记之a标签
   1.内部链接(当前文档与目标文档在同一站点内)<a href=”目标文档位置及全称”></a>;    2.外部链接(当前文档与目标文档不在同一站点内)<a href=”URL(网址)”></a>;    3.E-mail链接(并允许访问者向指定的地址发送邮件)<a href=”mailto:电子邮件地址”></a>;    4.锚点连接 跳转到同一网页或其他文档的指定位置:创建锚点,<a name=”锚点名称”>显示内容</a>链接锚点,<a href=”(URL)#锚点名称”>显示内容</a>;    5.空链接,就是没有目标端点的链接,<a href=”#”>显示内容</a>;    6.脚本链接:是一种特殊的链接,当单击设置脚本链接的文本或图像时,可以运行相应的JS语句。
阿豪聊干货
2018/08/09
2.4K0
HTML单双标记
HTML标记的类型:单标记与双标记 一.单标记 (1).<标记名称> 单一型,无属性值。 如:<br/> 在xhtml中,规定,所有HTML标记,都要小写,所有的标记都要有关闭。 (2).<标记名称 属性="属性值"> 单一型,有属性值。 如:<hr width="80%"/> 二.双标记 (3).<标记名称>...</标记名称> 没有属性值。 如:<title>...</title> (4).<标记名称 属性=”属性值“>...</标记名称> 有属性。 如:<font color="pink">...</
十月梦想
2018/08/29
2.2K0
html常用标签标记
本博客所有文章如无特别注明均为原创。作者:十月梦想 ,复制或转载请以超链接形式注明转自 十月梦想博客 。 原文地址《html常用标签标记》
十月梦想
2018/08/29
1.7K0
HTML标记语法总结
         语法:<标记名>…标记内容…</标记名>,如:<a>这是百度的主页</a>
阿豪聊干货
2018/08/09
2.1K0
HTML图像标记和CSS入门(二)
3.1 font-size 字号大小 它的属性用于设置字号 相对长度 em px 最常用,推荐使用 3.2 font-family 字体 它的属性用于设置字体
默默的成长
2022/10/29
1.5K0
HTML图像标记和CSS入门(二)
HTML图像标记和CSS入门(一)
1.图像标记 1.1 <img src="图像URL“/> src指定图像文件的路径和文件名,它是img标记的必需品。 1.2 文本属性 alt :在图像无法显示时告诉用户该图片的内容。 1.3 图像的宽高属性 width,height 两者不能同时使用 1.4 图像的边框的属性 border :可以为图像添加边框,设置边框的宽度,但边框颜色的调整仅仅通过HTML属性时不能通过的。 1.5 图像的边距属性 vspace 和hspace 1.6图像的对齐方式用align表示 2.相对路径和绝对路径 1.绝对路径 绝对路径一般是指带有盘符的路径
默默的成长
2022/10/29
2.2K0
HTML5基本标记
JaneYork
2023/10/11
1780
671. 循环单词重复加标记
The words are same rotate words if rotate the word to the right by loop, and get another. Count how many different rotate word sets in dictionary.
和蔼的zhxing
2018/09/04
5680
HTML标记之Form表单
从访问的Web站点的用户那里获得信息。访问者可以使用诸如文本域、列表框、复选框以及单选按钮之类的表单元素输入信息,然后单击某个按钮提交这些信息。是客户端与服务器端的交流途径。
阿豪聊干货
2018/08/09
2.6K0
HTML5中的DOM扩展(三)插入标记
今天我们说一下插入标记,我们熟悉的插入有innerHTML,其实还有几种和他类似的方法,我们展开说一下。
大熊G
2022/11/14
2K0
HTML5中的DOM扩展(三)插入标记
HTML标记语法之列表元素
1.无序列表     <ul>        <li type=”项目符号类型”></li>        <li type=”项目符号类型”></li>        <li type=”项目符号类型”></li>         ……         <li type=”项目符号类型”></li>     </ul>     type的可取值:disc:●、circle:○、square:■. 2.有序列表 <ol type=”项目符号类型”start = “列表起点(为数字)” >        <l
阿豪聊干货
2018/08/09
1.8K0
HTML一些标记的认识
在HTML5中主要的特性之一就是减少网页对Flash的依赖,很多视频网站和网页游戏都依赖着Flash来运行,很多时候会发现,没有安装Flash就无法打开一些网页,运行Flash对浏览器压力比较大,使用HTML5就可以直接剔除Flash直接通过HTML5来播放视频或者运行网页游戏,这样可以很大程度减轻对浏览器的压力,并且网站开发人员维护起来也要方便得多。虽然HTML5出来有一段时间了,但是国内普遍还是使用着Flash,在国外的网站大部分都已经转用了HTML5,例如YouTube视频网站。
端碗吹水
2020/09/23
1.7K0
HTML一些标记的认识
HTML标记语法之表格元素
8.直列化格式:<colgroup><colgroup>(<col>与<colgroup>的功能完全一样)
阿豪聊干货
2018/08/09
2.2K0
HTML标记语言学习笔记
本文内容大多粘贴自www.w3school.com.cn/html/index.asp,详情可打开该网站查看,本人仅做简化整理。
Sidchen
2020/08/03
1.9K0
HTML标记语法之图片Img元素
语法:<img src=”xxx.jpg”alt=”xxx”title=”xxx”> 属性可取值如下: 属性名称 属性值 说明 src URL 图片路径 alt 文本 图片无法显示时的文本 title 文本 鼠标停留时显示的内容 width 像素/百分比 设置图片宽度 height 像素/百分比 设置图片高度 border 数字 设置图像边框 align     left 图片靠左,文字靠右 right 图片靠右,文字靠左 top 文字垂直居上靠
阿豪聊干货
2018/08/09
1.9K0
HTML常用文本标记,超级链接和路径描述
在body标记里写的文本内容会直接显示在页面上,但是这样直接写文本内容的方式不太好。我们在html里写文本内容的时候尽量使用标记套住内容,类似于声明这是一个文本、体现特征,在爬取数据的时候也就可以方便的通过标记来抓取或过滤指定的数据,所以需要我们学习一些常用的文本标记。
端碗吹水
2020/09/23
2K0
HTML常用文本标记,超级链接和路径描述
标记肤色
算法:肤色范围划定为:色调值在[5,170]之间,饱和度值在[25,166]之间(肤色范围根据实际图片设定)。
裴来凡
2022/05/28
1.2K0
标记肤色

相似问题

如何高亮显示html标记中的单词而不突出显示vue中的标记

12

安全筛选器仍显示HTML标记

256

从html代码中筛选空<span>标记

20

替换html标记中的单词

25

jquery和html输入标记

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档