首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JS查找并突出显示文本中的word

使用JS查找并突出显示文本中的word
EN

Stack Overflow用户
提问于 2018-10-10 23:33:02
回答 3查看 12.4K关注 0票数 5

我是Javascript的新手。我有一个问题:如何在文本中突出显示word,这是在输入中键入的。我只能检查这个词是否在文本中,但不能在文本中突出显示这个词。提前感谢大家!

代码语言:javascript
复制
   var paragraph = document.getElementById('paragraph').innerText; //PARAGRAPH
        input = document.getElementById('typed-text').value; //TYPED TEXT
        textIncludes = paragraph.includes(input); // TEXT INCLUDES WORD
    
    
    if (textIncludes === true) {
        alert('Word has been found')
    } else {
        alert('No matches found')
    }
代码语言:javascript
复制
 <div id="highlights">
            <div class="container">
                <div class="row">
                    <div class="col-md-12" id="paragraph">
                        <p>
                            Robotics is an interdisciplinary branch of engineering and science that includes mechanical engineering, electronics engineering, information engineering, computer science, and others. Robotics deals with the design, construction, operation, and use of robots, as well as computer systems for their control, sensory feedback, and information processing.
                            These technologies are used to develop machines that can substitute for humans and replicate human actions. Robots can be used in many situations and for lots of purposes, but today many are used in dangerous environments (including bomb detection and deactivation), manufacturing processes, or where humans cannot survive (e.g. in space). Robots can take on any form but some are made to resemble humans in appearance. This is said to help in the acceptance of a robot in certain replicative behaviors usually performed by people. Such robots attempt to replicate walking, lifting, speech, cognition, and basically anything a human can do. Many of today's robots are inspired by nature, contributing to the field of bio-inspired robotics.
                            The concept of creating machines that can operate autonomously dates back to classical times, but research into the functionality and potential uses of robots did not grow substantially until the 20th century.[1] Throughout history, it has been frequently assumed that robots will one day be able to mimic human behavior and manage tasks in a human-like fashion. Today, robotics is a rapidly growing field, as technological advances continue; researching, designing, and building new robots serve various practical purposes, whether domestically, commercially, or militarily. Many robots are built to do jobs that are hazardous to people such as defusing bombs, finding survivors in unstable ruins, and exploring mines and shipwrecks. Robotics is also used in STEM (science, technology, engineering, and mathematics) as a teaching aid.
                            Robotics is a branch of engineering that involves the conception, design, manufacture, and operation of robots. This field overlaps with electronics, computer science, artificial intelligence, mechatronics, nanotechnology and bioengineering.
                        </p>
                    </div>
                    <div class="col-md-12 input-group mt-3">
                        <div class="input-group-prepend">
                            <span class="input-group-text" id="basic-addon1">
                                <i class="fas fa-pencil-alt"></i>
                            </span>
                        </div>
                        <input id="typed-text" type="text" class="form-control" placeholder="Type text">
                    </div>
                </div>
            </div>
        </div>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-11 03:16:59

这是我的解决方案。我发现有两种方法可以做到这一点。在火狐中,你可以使用selection api。不幸的是,它不能在Chrome中工作。一种更简单的解决方案是只匹配搜索文本,并通过将其包含在<mark>标记中来突出显示它。

代码语言:javascript
复制
var opar = document.getElementById('paragraph').innerHTML;

function highlight() {
  var paragraph = document.getElementById('paragraph');
  var search = document.getElementById('typed-text').value;
  search = search.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); //https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex

  var re = new RegExp(search, 'g');
  var m;

  if (search.length > 0)
    paragraph.innerHTML = opar.replace(re, `<mark>$&</mark>`);
  else paragraph.innerHTML = opar;
}
代码语言:javascript
复制
<div id="highlights">
  <div class="container">
    <div class="row">
      <div class="col-md-12" id="paragraph">
        <p>
          Robotics is an interdisciplinary branch of engineering and science that includes mechanical engineering, electronics engineering, information engineering, computer science, and others. Robotics deals with the design, construction, operation, and use of
          robots, as well as computer systems for their control, sensory feedback, and information processing. These technologies are used to develop machines that can substitute for humans and replicate human actions. Robots can be used in many situations
          and for lots of purposes, but today many are used in dangerous environments (including bomb detection and deactivation), manufacturing processes, or where humans cannot survive (e.g. in space). Robots can take on any form but some are made to
          resemble humans in appearance. This is said to help in the acceptance of a robot in certain replicative behaviors usually performed by people. Such robots attempt to replicate walking, lifting, speech, cognition, and basically anything a human
          can do. Many of today's robots are inspired by nature, contributing to the field of bio-inspired robotics. The concept of creating machines that can operate autonomously dates back to classical times, but research into the functionality and
          potential uses of robots did not grow substantially until the 20th century.[1] Throughout history, it has been frequently assumed that robots will one day be able to mimic human behavior and manage tasks in a human-like fashion. Today, robotics
          is a rapidly growing field, as technological advances continue; researching, designing, and building new robots serve various practical purposes, whether domestically, commercially, or militarily. Many robots are built to do jobs that are hazardous
          to people such as defusing bombs, finding survivors in unstable ruins, and exploring mines and shipwrecks. Robotics is also used in STEM (science, technology, engineering, and mathematics) as a teaching aid. Robotics is a branch of engineering
          that involves the conception, design, manufacture, and operation of robots. This field overlaps with electronics, computer science, artificial intelligence, mechatronics, nanotechnology and bioengineering.
        </p>
      </div>
      <div class="col-md-12 input-group mt-3">
        <div class="input-group-prepend">
          <span class="input-group-text" id="basic-addon1">
                            <i class="fas fa-pencil-alt"></i>
                        </span>
        </div>
        <input id="typed-text" type="text" class="form-control" placeholder="Type text" onkeyup="highlight()">
      </div>
    </div>
  </div>
</div>

这个想法非常简单。在keyup事件上(当用户按完一个键时),highlight函数将搜索文本中的所有匹配项,然后使用<mark>标记突出显示它们。

票数 11
EN

Stack Overflow用户

发布于 2018-10-10 23:50:58

使用此示例:

代码语言:javascript
复制
var input = document.getElementById('typed-text');

input.onkeydown = function (e) {

    if (e.keyCode === 13) {

        var paragraph = document.getElementById('paragraph');
        var result = document.querySelector('.result-output');
        var regexp = new RegExp(this.value, 'g');
        var textIncludes = paragraph.textContent.match(regexp);
            
        if (result)
            result.remove();

        paragraph.innerHTML = paragraph.textContent.replace(
            regexp,
            '<span style="color:red">' + this.value + '</span>');

        paragraph.insertAdjacentHTML(
            'afterend',
            '<span class="result-output" style="display: block; padding: 5px; margin-top: 10px; background: #eee; color: green;">' + (textIncludes ? textIncludes.length : 0) + ' words has been found.</span>');
            
    }

}
代码语言:javascript
复制
<div id="highlights">
        <div class="container">
            <div class="row">
                <div class="col-md-12" id="paragraph">
                    <p>
                        Robotics is an interdisciplinary branch of engineering and science that includes mechanical engineering, electronics engineering, information engineering, computer science, and others. Robotics deals with the design, construction, operation, and use of robots, as well as computer systems for their control, sensory feedback, and information processing.
                        These technologies are used to develop machines that can substitute for humans and replicate human actions. Robots can be used in many situations and for lots of purposes, but today many are used in dangerous environments (including bomb detection and deactivation), manufacturing processes, or where humans cannot survive (e.g. in space). Robots can take on any form but some are made to resemble humans in appearance. This is said to help in the acceptance of a robot in certain replicative behaviors usually performed by people. Such robots attempt to replicate walking, lifting, speech, cognition, and basically anything a human can do. Many of today's robots are inspired by nature, contributing to the field of bio-inspired robotics.
                        The concept of creating machines that can operate autonomously dates back to classical times, but research into the functionality and potential uses of robots did not grow substantially until the 20th century.[1] Throughout history, it has been frequently assumed that robots will one day be able to mimic human behavior and manage tasks in a human-like fashion. Today, robotics is a rapidly growing field, as technological advances continue; researching, designing, and building new robots serve various practical purposes, whether domestically, commercially, or militarily. Many robots are built to do jobs that are hazardous to people such as defusing bombs, finding survivors in unstable ruins, and exploring mines and shipwrecks. Robotics is also used in STEM (science, technology, engineering, and mathematics) as a teaching aid.
                        Robotics is a branch of engineering that involves the conception, design, manufacture, and operation of robots. This field overlaps with electronics, computer science, artificial intelligence, mechatronics, nanotechnology and bioengineering.
                    </p>
                </div>
                <div class="col-md-12 input-group mt-3">
                    <div class="input-group-prepend">
                        <span class="input-group-text" id="basic-addon1">
                            <i class="fas fa-pencil-alt"></i>
                        </span>
                    </div>
                    <input id="typed-text" type="text" class="form-control" placeholder="Type text">
                </div>
            </div>
        </div>
    </div>

票数 3
EN

Stack Overflow用户

发布于 2018-10-10 23:49:34

使用replaceinput替换为突出显示的input。例如,使用<b>粗体html标记(或其他html标记):

代码语言:javascript
复制
document.getElementById('paragraph').innerHTML = document.getElementById('paragraph').innerHTML.replace(input, "<b>"+input+"</b>");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52743841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档