仅突出显示“搜索”中的第一个字符串
highlighting only the First string in Search
我是JavaScript新手。我的javascript代码出现问题。我正在尝试使用字符串替换方法来突出显示搜索到的文本。但是我的函数只突出显示它找到的第一个字符串,而不突出显示其他字符串!!如何修复它以查找我在搜索中键入的所有字符串。这是我的代码:
<html>
<head>
<script language="javascript">
function search()
{
var s = document.getElementById("p1").innerHTML
document.getElementById("p1").innerHTML = s.replace(document.getElementById('txt').value , '<span style="color:red">'+document.getElementById("txt").value+'</span>')
}
</script>
</head>
<body>
<input type="text" id="txt" value="search..." onfocus="value=''" />
<input type="button" id="btn" value="search" onclick="search()"/>
<p id="p1">
Type any word from this paragraph in the box above, then click the "Search" button to highlight it red
</p>
</body>
g
全局标志的正则表达式将有所帮助:
function search() {
var p1 = document.getElementById("p1"),
value = document.getElementById("txt").value,
regex = new RegExp("''b" + value + "''b", "gi"),
rwith = '<span style="color: red;">$&</span>';
p1.innerHTML = p1.innerHTML.replace(regex, rwith);
}
演示:http://jsfiddle.net/guC4j/
一个选项是使用split
和join
,如下所示:
document.getElementById("p1").innerHTML = s.split(document.getElementById('txt').value).join('<span style="color:red">'+document.getElementById("txt").value+'</span>');
这是一个可以玩的jsFiddle。
相关文章:
- 在JavaScript中将字符串中的第一个字母更改为大写
- 在字符串列表中搜索任何出现的单词,如果单词的第一个字符匹配,则高亮匹配单词.Javascript正则表达式
- 从多行文字中获取第一个修剪的字符串
- 我如何从字符串中选出第一个单词的第一个字母,然后再选出第二个单词
- Regex模式,用于检查字符串中每个单词的第一个字母(如果是Javascript中的大写字母)
- 如何使用正则表达式限制字符串的第一个字符
- 使用javascript替换字符串中除第一个和最后一个之外的所有字符
- 字符串替换只替换第一个匹配项,可以'不要让它全球化
- 获取第一个字符串并在 Ajax 中进行比较
- 正则表达式每行只匹配第一个字符串
- 如何根据 URL 中符号后的第一个字符串设置变量
- 如何拆分一个字符串,然后将第二个字符串(链接)嵌入到第一个字符串中
- 如果第一个字符串包含第二个字符串的所有字母,则返回ture
- 查找字符后的第一个字符串
- 根据二级数组中的第一个字符串从最大到最小的字符串大小对2维数组进行排序
- 排除第一个字符串不追加到字符
- indexOf在找到匹配的第一个字符串后停止,但我希望它找到匹配的最佳字符串
- 比较数组中的第二个字符串和第一个字符串
- 仅突出显示“搜索”中的第一个字符串
- 从json中调用第一个字符串