Javascript Jquery-在句子中查找一个单词并添加span

Javascript Jquery-在句子中查找一个单词并添加span,javascript,jquery,Javascript,Jquery,我正在写一个函数来查找句子中的单词,并在上面添加span。这是代码,但它不起作用。有人能指出我的错误吗?谢谢 函数find_和_add(element=“”,findWord=“”){ $(元素)。每个(函数(){ var arr=$('h1a',this).text().split(''); var newTitle=“”; $。每个(arr、函数(键、值){ if(值==findWord){ newTitle+=“+value+””; }否则{ 新标题+=值+“”; } }); $(“h1

我正在写一个函数来查找句子中的单词,并在上面添加span。这是代码,但它不起作用。有人能指出我的错误吗?谢谢

函数find_和_add(element=“”,findWord=“”){
$(元素)。每个(函数(){
var arr=$('h1a',this).text().split('');
var newTitle=“”;
$。每个(arr、函数(键、值){
if(值==findWord){
newTitle+=“+value+”
”; }否则{ 新标题+=值+“”; } }); $(“h1a”,this).html(newTitle); }); } 查找并添加('.wrapper',BMW'); 查找并添加('.wrapper',Toyota'); 查找并添加('.wrapper',法拉利')
您的代码有很多问题

在类名前需要一个点

find_and_add('.wrapper', 'BMW');
您正在传递父包装器,然后试图以一种非常复杂的方式在一群子对象中找到一个特定的单词。为什么不按照下面的例子传递父项和搜索词列表呢

函数find_和_add(element=“”,findWords=“”){
$(元素).find(“h1a”).each(函数(){
变量$elem=$(本);
var arr=$elem.text().split(“”);
var newTitle=“”;
$。每个(arr、函数(键、值){
if(findWords.indexOf(value)>-1){
newTitle+=“+value+”
”; }否则{ 新标题+=值+“”; } }); $elem.html(newTitle); }); } 查找并添加('.wrapper',['BMW','Toyota','ferari'])
span{
背景颜色:黄色
}

您的代码有很多问题

在类名前需要一个点

find_and_add('.wrapper', 'BMW');
您正在传递父包装器,然后试图以一种非常复杂的方式在一群子对象中找到一个特定的单词。为什么不按照下面的例子传递父项和搜索词列表呢

函数find_和_add(element=“”,findWords=“”){
$(元素).find(“h1a”).each(函数(){
变量$elem=$(本);
var arr=$elem.text().split(“”);
var newTitle=“”;
$。每个(arr、函数(键、值){
if(findWords.indexOf(value)>-1){
newTitle+=“+value+”
”; }否则{ 新标题+=值+“”; } }); $elem.html(newTitle); }); } 查找并添加('.wrapper',['BMW','Toyota','ferari'])
span{
背景颜色:黄色
}

请找到解决以下问题的JSFIDLE

我在一个函数调用中处理每一件事情,这将确保更好的性能。我通过一个函数调用传递所有要更改的单词。您正在进行的替换必须更改,因为我们需要在jquery中单独替换元素$(this)

function find_and_add(element = "", findWord = "") {
          var lookUpWords = findWord.split(' ');
      $(element).each(function() {
        var arr = $('h1 a', this);
        //console.log(arr);

        $.each(arr ,function(key, value) {
          debugger;
            console.log(value);
          var newTitle = "";
          var words = value.text.split(' ');
          $.each(words,function(wkey,wvalue){
             if (lookUpWords.indexOf(wvalue) >= 0) {
              newTitle += "<span>"+ wvalue + "</span><br/>";
            } else {
              newTitle += wvalue + " ";
            }

          });
         $(this).html(newTitle);

        });
        //$("h1 a", this).html('').html(newTitle);
      });
    }

    find_and_add('.wrapper', 'BMW Toyota Ferrari');
    //find_and_add('.wrapper', 'Toyota');
    //find_and_add('.wrapper', 'Ferrari');
函数find_和_add(element=“”,findWord=“”){
var lookUpWords=findWord.split(“”);
$(元素)。每个(函数(){
var arr=$('h1 a',此);
//控制台日志(arr);
$。每个(arr、函数(键、值){
调试器;
console.log(值);
var newTitle=“”;
var words=value.text.split(“”);
$.each(单词、函数(wkey、wvalue){
if(lookUpWords.indexOf(wvalue)>=0){
newTitle+=“”+wvalue+“
”; }否则{ newTitle+=wvalue+“”; } }); $(this.html(newTitle); }); //$(“h1a”,this.html(“”).html(newTitle); }); } 查找并添加(“.wrapper”,“宝马-丰田-法拉利”); //查找并添加('.wrapper',Toyota'); //查找并添加('.wrapper',法拉利');
请找到解决以下问题的JSFIDLE

我在一个函数调用中处理每一件事情,这将确保更好的性能。我通过一个函数调用传递所有要更改的单词。您正在进行的替换必须更改,因为我们需要在jquery中单独替换元素$(this)

function find_and_add(element = "", findWord = "") {
          var lookUpWords = findWord.split(' ');
      $(element).each(function() {
        var arr = $('h1 a', this);
        //console.log(arr);

        $.each(arr ,function(key, value) {
          debugger;
            console.log(value);
          var newTitle = "";
          var words = value.text.split(' ');
          $.each(words,function(wkey,wvalue){
             if (lookUpWords.indexOf(wvalue) >= 0) {
              newTitle += "<span>"+ wvalue + "</span><br/>";
            } else {
              newTitle += wvalue + " ";
            }

          });
         $(this).html(newTitle);

        });
        //$("h1 a", this).html('').html(newTitle);
      });
    }

    find_and_add('.wrapper', 'BMW Toyota Ferrari');
    //find_and_add('.wrapper', 'Toyota');
    //find_and_add('.wrapper', 'Ferrari');
函数find_和_add(element=“”,findWord=“”){
var lookUpWords=findWord.split(“”);
$(元素)。每个(函数(){
var arr=$('h1 a',此);
//控制台日志(arr);
$。每个(arr、函数(键、值){
调试器;
console.log(值);
var newTitle=“”;
var words=value.text.split(“”);
$.each(单词、函数(wkey、wvalue){
if(lookUpWords.indexOf(wvalue)>=0){
newTitle+=“”+wvalue+“
”; }否则{ newTitle+=wvalue+“”; } }); $(this.html(newTitle); }); //$(“h1a”,this.html(“”).html(newTitle); }); } 查找并添加(“.wrapper”,“宝马-丰田-法拉利”); //查找并添加('.wrapper',Toyota'); //查找并添加('.wrapper',法拉利');
如果有人只是说“我的代码不起作用了”,那么就应该支付罚款:)你的代码做错了什么?或者它根本没有做什么?您缺少了一个点:),而且错误远不止这个点。我建议使用string.replace替换为regex,而不是拆分和手动迭代单词。它不会解决您的问题,但会简化代码,从而更容易识别问题。@TheSharpieOne
text=text.replace(新的RegExp(value,“g”),“”+value+“”)当有人说“我的代码不工作”时,应该支付罚款:)你的代码做错了什么?或者它根本没有做什么?您缺少了一个点:),而且错误远远不止这个点。我是否可以建议使用string.replace替换为regex,而不是拆分并手动迭代