javascript - JS函数后innerHTML属性没有改变
问题描述
我是 JS 的新手,所以我有以下任务:在页面上给出了一些文本,当用户想要通过在窗口中添加这个字符串然后单击“搜索”来查找一组字符或字符串时,这个每次遇到字符串时,都应在我们的文本中将其标记为粗体。查看我的代码,我几乎可以确定该函数正在运行,但是在函数完成后,粗体字符串会闪烁片刻,文本会返回其初始状态。
请帮我找出我的错误。这是代码。
function look(a) {
var str = document.getElementById("original").innerHTML;
var len = a.text.value.length;
var begin = str.indexOf(a.text.value);
var final = str;
if (begin == -1) {
alert("No matches");
return false;
}
if (begin > -1) {
var count = 0;
final = str.substring(count, begin) + "<b>" + a.text.value + "</b>" + str.substring(begin + len + 1, str.length);
while (begin != -1) {
begin = str.indexOf(a.text.value, begin + len);
if (begin == -1) break;
final = final.substring(count, begin) + "<b>" + a.text.value + "</b>" + str.substring(begin + len + 1, str.length);
}
document.getElementById("original").innerHTML = final;
return true;
}
}
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<span id="original" type="text">Some given text</span>
<br/>
<form name="search" onsubmit="return look(this)">
<p>Enter text to search<input type="text" name="text"></p>
<p><input type="submit" value="search"></p>
</form>
</body>
解决方案
页面令人耳目一新!默认情况下,表单会刷新页面。您可以使用 on submit 函数的返回值来停止这种默认行为:只需返回 false。
function look(a)
{
var str=document.getElementById("original").innerHTML;
var len=a.text.value.length;
var begin=str.indexOf(a.text.value);
var final=str;
if (begin==-1){
alert("No matches");
return false;
}
if (begin>-1){
var count=0;
final=str.substring(count,begin)+"<b>"+a.text.value+"</b>"+str.substring(begin+len+1, str.length);
while(begin!=-1){
begin=str.indexOf(a.text.value,begin+len);
if(begin==-1) break;
final=final.substring(count, begin)+"<b>"+a.text.value+"</b>"+str.substring(begin+len+1, str.length);
}
document.getElementById("original").innerHTML=final;
return false;
}
}
<body>
<span id="original" type="text">
Some given text
</span>
<br/>
<form name="search" onsubmit="look(this); return false;">
<p>
Enter text to search<input type="text" name="text">
</p>
<p>
<input type="submit" value="search">
</p>
</form>
</body>
</html>
推荐阅读
- javascript - 如何在 nativescript 中定义默认的 TabView?
- image - 如何使用 jpeg 在压缩图像中找到 jpeg 标头
- python - 如何在 ListView 中包含 CreateView 模板?
- javascript - 如何在 Python 中解析 html 源代码中的 javascript 代码?
- r - 是否有一个 R 函数用于附加具有不相等列的列表
- mysql - Laravel:数据库查询返回标准类而不是数组
- php - Moodle XMLDB 如何将 scema 应用到我的数据库中
- dart - Dart - 通过映射构造函数实例化泛型类型
- pandas - 计算两个日期之间的周末数(周六和周日)
- python-3.x - 自定义 NER Spacy 抛出 IndexError:列表索引超出范围