仅突出显示“搜索”中的第一个字符串

时间:2013-02-08 22:10:27

标签: javascript replace

我是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>

2 个答案:

答案 0 :(得分:4)

带有g 全球标志的

Regular expression会有所帮助:

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);
}

DEMO: http://jsfiddle.net/guC4j/

答案 1 :(得分:1)

一种选择是使用splitjoin,如下所示:

document.getElementById("p1").innerHTML = s.split(document.getElementById('txt').value).join('<span style="color:red">'+document.getElementById("txt").value+'</span>');

这是一个jsFiddle来玩。