javascript - 文本颜色随搜索输入而变化,但无法按预期工作
问题描述
我已经尝试过帮助:
如何使用 javascript 突出显示文本- Stackoverflow 链接
如何获取 Javascript 中突出显示的字符串的开始和结束索引?- Stackoverflow 链接
突出显示搜索匹配的单行解决方案- 外部链接
但达到了一定的成就标志。
现在只突出显示第一个字母。如果我在搜索中输入小写字母,它们也会变成小写字母,反之亦然
当输入被清除时,整个replace
显示包括tag
名称
这是我达到的目标:
function refree() {
var reed = document.getElementById("search").value;
var reed1 = reed.toLowerCase();
var reader = document.getElementsByClassName("deviceNameCardHead")
// for (let i = 0; i < reader.length; i++) {
reader[0].innerHTML = reader[0].innerHTML.replace(new RegExp(reed1, 'gi'), `<span class="highlight">${reed}</span>`);
}
//}
.highlight {
background: yellow;
}
<div id="devicesBtnData">
<div class="searchDevice">
<span class="searchDeviceBtn">Search Device</span>
<input id="search" type="search" placeholder="Try it" oninput="refree()">
<br>
</div>
<div class="deviceNameCard">
<h3 class="deviceNameCardHead">Lenova Yoga laptop Pro</h3>
</div>
</div>
下面的答案解决了大部分问题。但是有没有办法这样:
- 用户输入
p
时,无论是小写还是大写,都会突出显示所有出现input
的,如果输入的是小写,则不会将其所有出现更改为小写,如下所示:Lenova Yoga la p to p p ro 但应该像这样 Lenova Yoga la p to p P ro(当是小写或大写时)p
p
p
解决方案
这可以是解决方案。但我不知道match
这里是怎么用的。这是我第一次使用它。如果有人可以在评论中讲述它会有所帮助
const reader = document.querySelector(".deviceNameCardHead");
const reader_text = reader.textContent;
function refree() {
var reed = document.getElementById("search").value;
var reed1 = reed.toLowerCase();
// for (let i = 0; i < reader.length; i++) {
reader.innerHTML = reader_text.replace(new RegExp(reed1, 'gi'), (match) => `<span class="highlight">${match}</span>`);
}
//}
.highlight {
background: yellow;
}
<div id="devicesBtnData">
<div class="searchDevice">
<span class="searchDeviceBtn">Search Device</span>
<input id="search" type="search" placeholder="Try it" oninput="refree()">
<br>
</div>
<div class="deviceNameCard">
<h3 class="deviceNameCardHead">Lenova Yoga laptop Pro</h3>
</div>
</div>
推荐阅读
- java - 在Tomcat api中部署war文件后不起作用
- vb.net - 如何使用 Visual Basic .net (vb.net) 根据文件大小计算文件夹中的文件?
- python - 如何停止 pymodbus 异步 ModbusTcpServer?
- fonts - 控制 TrueType 字体中字形大小的变量
- mysql - How to insert many rows into two relative tables in mysql?
- python-3.x - How parse a web with dynamic url in python
- python - 尝试运行python脚本时出现unicode错误
- java - how to get twitter trending topics on button click android - twitter4j?
- android - 如何在 .NetStandard 上的 HTTPClient 中修复“java.io.IOException:连接上的流意外结束”异常
- ios - iOS Build 在 iTunes 上消失