在运行时按搜索按钮突出显示文本

highlight text at run time by pressing search button

本文关键字:显示 文本 按钮 运行时 搜索      更新时间:2023-09-26

我做了一个小程序,可以从div中搜索值...它显示单词的第一个位置但是我想在所有重复的位置按下搜索按钮后突出显示搜索的单词。

<html>
<head>
<style type="text/css">
#searchdiv{background-color: #999999;left: 277px;margin: 39px 0 0 84px;padding:5px;width:500px;align:center;}
</style>
<script type="text/javascript">
function search()
{
    var keyword=document.getElementById("keyword").value;
    var str=document.getElementById("area").innerHTML;
    var n=str.search(keyword);
    alert('Location is :'+n);
}
</script>
<body>
<div id="searchdiv">
     <input type="text" id="keyword" name="text" size="70" />
     <input type="button" value="search" id="btn" name="button" onclick="search()"/>
     <br>
     <div style="width:444px;" id="area" name="textarea">rajendra kumar rahar from jhunjhunu</div>
</div>
</body>
<html>

我已经尝试了很多次,但无法通过JavaScript突出显示div中的特定文本的想法......????如果有人有,请告诉我

<html>
<head>
<style type="text/css">
#searchdiv{background-color: #999999;left: 277px;margin: 39px 0 0 84px;padding:5px;width:500px;align:center;}
</style>
<script type="text/javascript">
function search()
{
    var keyword=document.getElementById("keyword").value;
    var str=document.getElementById("area").innerHTML;
    var n=str.search(keyword);
    var anshu=str.substring(n,(n+keyword.length)); 
    //alert('Word Found :'+anshu);
    var af = document.getElementById("area");
    af.innerHTML = str.slice(0, n) 
    af.innerHTML += '<b>' + anshu + '</b>';
    af.innerHTML += str.slice(n+keyword.length);
}
</script>
<body>
<div id="searchdiv">
     <input type="text" id="keyword" name="text" size="70" />
     <input type="button" value="search" id="btn" name="button" onclick="search()"/>
     <br>
     <div style="width:444px;" id="area" name="textarea">rajendra kumar rahar from jhunjhunu</div>
</div>
</body>
<html>
new_html = "<div class='highlighted'>" + n + "</div>";

您可以对 innerHTML 进行切片,添加一个标签,然后将其连接回来。因此,在搜索结束时放置:

var a = document.getElementById("area");
a.innerHTML = str.slice(0, n) 
a.innerHTML += '<b>' + keyword + '</b>';
a.innerHTML += str.slice(n+keyword.length);

不过,我没有看到任何简单的方法允许对文本进行去突出显示。

尝试这样的事情

var high = "<div class='highlighted'>"+n+"</div>";
document.getElementById("area").innerHTML = str.replace(n,high);