效果图如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
#box {
width: 1000px;
height: 600px;
border: 2px black solid;
margin: 40px auto;
}
#header {
width: 100%;
display: flex;
justify-content: space-between;
margin-top: 20px;
}
#header input {
flex: 1;
height: 40px;
font-size: 30px;
outline: none;
}
#header input[type="button"] {
cursor: pointer;
}
#text {
margin: 20px 10px;
}
#text p {
text-indent: 2em;
line-height: 60px;
}
</style>
</head>
<body>
<div id="box">
<div id="header">
<input name="search" type="text" placeholder="搜索内容" />
<input type="button" value="搜索" class="btn1" />
<input name="replace" type="text" placeholder="替换内容" />
<input type="button" value="替换" class="btn2" />
<input type="button" value="重置" class="btn3" />
</div>
<div id="text">
<p>张家界,原名大庸市,湖南省辖地级市,辖2个市辖区(永定区、武陵源区)、2个县(慈利县、桑植县)。位于湖南西北部,澧水中上游,属武陵山区腹地,
张家界因旅游建市,是中国重要的旅游城市之一是湘鄂渝黔革命根据地的发源地和中心区域。</p>
<p>1982年9月,张家界国家森林公园为第一个国家森林公园</p>
<p>1988年8月,张家界 武陵源被列入国家第二批40处重点风景名胜区之内。1992年,
由张家界武陵源自然风景区被联合国教科文组织列入《世界自然遗产名录》</p>
</div>
</div>
<script>
// 不能带引号,有数字就行
// var str1 = /\d/;
// console.log(str.test("12321"));
// console.log(str.test("sad"));
var oText = document.querySelector("#text"); // 找到文本内容标签
var oHeader = document.querySelector("#header"); // 找到事件委托点击需要用到的父级
var oIptSear = document.querySelector("[name='search']"); // 搜索框
var oIptRepl = document.querySelector("[name='replace']"); // 替换输入框
// var oBtnSear = document.querySelector('[value="搜索"]'); // 搜索按钮
// var oBtnRepl = document.querySelector('[value="替换"]'); // 替换按钮
// var oBtnRst = document.querySelector('[value="重置"]'); // 重置按钮
// 获取原始内容保存,重置时需要
var oldStr = oText.innerHTML;
// 获取所有文件内容,包括标签
var str = oText.innerHTML;
// console.log(str);
// 事件委托
oHeader.addEventListener("click", function (e) {
// 先判断点击的是按钮
if (e.target.getAttribute("type") == "button") {
if (e.target.className == "btn1") {
var val = oIptSear.value; // 得到输入搜索框的数据
var reg = `/${val}/g`; // 利用正则匹配找到搜索框里的数据,本质是字符串,传入时要用eval()进行解析成正则
// 判断存不存在要搜索的数据,不存在弹出错误并返回
if (!(eval(reg).test(str))) {
window.alert("没有符合的内容");
return;
}
str = str.replace(eval(reg), `<span style="background: red;">${val}</span>`);
oText.innerHTML = str;
}
else if (e.target.className == "btn2") {
var val = oIptSear.value; // 得到输入搜索框的数据
var reg = `/${val}/g`; // 利用正则匹配找到搜索框里的数据,本质是字符串,传入时要用eval()进行解析成正则
var val1 = oIptRepl.value; // 得到替换框的内容
// 判断存不存在要搜索的数据,不存在弹出错误并返回
if (!(eval(reg).test(str))) {
window.alert("没有符合的内容");
return;
}
str = str.replace(eval(reg), val1);
oText.innerHTML = str;
}
else if (e.target.className == "btn3") {
oText.innerHTML = oldStr;
// 再把重置后的值给str,否则下次搜索就不是原始数值
str = oldStr;
}
}
})
// 分开写法
// oBtnSear.addEventListener("click", function () {
// var val = oIptSear.value; // 得到输入搜索框的数据
// var reg = `/${val}/g`; // 利用正则匹配找到搜索框里的数据,本质是字符串,传入时要用eval()进行解析成正则
// // 判断存不存在要搜索的数据,不存在弹出错误并返回
// if (!(eval(reg).test(str))) {
// window.alert("没有符合的内容");
// return;
// }
// str = str.replace(eval(reg), `<span style="background: red;">${val}</span>`);
// oText.innerHTML = str;
// });
// oBtnRepl.addEventListener("click", function () {
// var val = oIptRepl.value; // 得到输入替换框的数据
// var val1 = oIptSear.value;
// var reg = `/${val1}/g`; // 利用正则匹配找到搜索框里的数据,本质是字符串,传入时要用eval()进行解析成正则
// // 判断存不存在要搜索的数据,不存在弹出错误并返回
// if (!(eval(reg).test(str))) {
// window.alert("没有符合的内容");
// return;
// }
// str = str.replace(eval(reg), val);
// oText.innerHTML = str;
// });
// oBtnRst.addEventListener("click", function () {
// oText.innerHTML = oldStr;
// str = oldStr;
// })
</script>
</body>
</html>