仅替换段落中的字词
Replace only words inside a paragraph
我正在使用正则表达式替换来<mark></mark>
输入文本。我遇到的问题是它从持有者div 中获取所有文本并将其替换为变量并添加标记标签。然后将其放回div 支架中。当我这样做时,如果我输入 "<p>"
,它会突出显示实际<p>
并将其输出回div。
有没有办法解决这个问题?这是我的标记代码:
function Search() {
var Notes = document.getElementById("NoteHolder").innerHTML;
var i = document.getElementById("Bar").value;
var inputReOne = $.trim(i);
var inp = inputReOne.replace(".", "'.").replace("<", "").replace(">", "").replace(
"/", "").replace(/''/, "");
document.getElementById("Bar").value = inp;
if ($.trim(inp) !== '') {
var InpComp = inp.toUpperCase();
var Ind = tags.indexOf(InpComp);
if (Ind === -1) {
var inpReg = new RegExp(inp, "im");
var WordCheck = Notes.match(inpReg);
if (WordCheck !== null) {
tags.push(InpComp);
var SearchReq = new RegExp("(" + inp + ")", "gim");
var after = Notes.replace(SearchReq, "<mark class=" +
ColorOptionReady + ">$1</mark>");
document.getElementById("NoteHolder").innerHTML = after;
}
.HTML:
<body>
<div>
<p id="form">
<input class="SearchInp" autocomplete="off" id="Bar" name="Input" type="text" placeholder="Search for word or phrase">
<input class="SearchInp" type="submit" id="sea" onClick="Search ()" value="Search"> <div id="NoteHolder">
</p>
<p class="NoteOp" id="NoteOne">This is a test paragraph uses to TeSt filters.</p>
<p class="NoteOp" id="NoteTwo">Random words, I need to see if it will mess up mark</p>
</div>
<script src="Test.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"> </script>
</body>
与其在 #NoteHolder
元素中搜索和替换,为什么不遍历每个.NoteOp
并在那里替换呢?
function search() {
var notes = document.getElementsByClassName("NoteOp");
var s = document.getElementById("Bar").value.trim();
for (var i = 0; i < notes.length; i++) {
var n = notes[i];
n.innerHTML = n.textContent.replace(new RegExp("(" + s + ")", "gim"), "<mark>$1</mark>");
}
}
<input class="SearchInp" autocomplete="off" id="Bar" name="Input" type="text" placeholder="Search for word or phrase">
<input class="SearchInp" type="submit" id="sea" onClick="search()" value="Search">
<div id="NoteHolder">
<p class="NoteOp" id="NoteOne">This is a test paragraph uses to TeSt filters.</p>
<p class="NoteOp" id="NoteTwo">Random words, I need to see if it will mess up mark</p>
</div>
注意:将每个.NoteOp
的内容存储在一个对象中,在其中处理文本并在每次搜索后简单地设置每个.NoteOp
的内容会更容易、更清晰。
相关文章:
- Javascript-在文本区域中断,但不在段落中中断
- 为什么可以't我在字段名称中使用-
- 如何在javascript中更改段落中不同行的css样式
- 从一组具有相同起始和结束的所有段落的段落中提取包含特定字符串的段落
- 我怎么能在同一个HTML页面上多次在不同的段落中添加相同的字符串呢
- 如何等到动态内容加载到段落中
- 如何按从当前单词到段落中该句子(.)结尾的范围选择文本
- 当用户在输入字段事件中输入内容时,为该字段事件添加动画占位符
- 单击“段落到文本区域”后,它会更新段落中的文本
- 如何在jQuery中从段落中删除不需要的元素
- 从文本框中获取文本并将其显示在段落中
- 将文本值与复选框值之和相乘,并将其显示在段落中
- 在JQuery mobile中的段落中使用变量
- 段落中的新行无效
- 单选按钮在按字机 7 中不起作用
- 阻止子域中某处包含特定字词的网址
- 仅替换段落中的字词
- 在网址中粘贴字词
- 谷歌广告字词转化跟踪代码中的条件语句
- 将段落中存在的各种文本输入字段的文本连接起来