Javascript 想把所有的单词都放在蓝色大写的网站上吗

Javascript 想把所有的单词都放在蓝色大写的网站上吗,javascript,jquery,joomla,Javascript,Jquery,Joomla,我在JOOMLA建了一个网站,在这个网站上我想把所有的“Inovflow”放在网站上,蓝色和大写。就像这个“INOVFLOW” 我将此代码放在网站的js文件夹中: jQuery(document).fn.findText = function(params){ var phrases = params.query, ignorance = params.ignorecase; wrapper = $(this); var source = wra

我在JOOMLA建了一个网站,在这个网站上我想把所有的“Inovflow”放在网站上,蓝色和大写。就像这个“INOVFLOW”

我将此代码放在网站的js文件夹中:

jQuery(document).fn.findText = function(params){
    var phrases = params.query, 
        ignorance = params.ignorecase;
        wrapper = $(this);
    var source = wrapper.html();
    selection_class_name = params.style;
    source = source.replace(/[\n|\t]+/gi, '');
    source = source.replace(/\s+/gi, ' ');
    source = source.replace(/> /gi, '>');
    source = source.replace(/(\w)</gi, function(m, w){return(w + " <");});

    phrases.forEach(function(str){

      var regexp = makeRegexp(str);
        source = source.replace(regexp, function (m){
          return (emulateSelection(m));
        });

    });

    wrapper.html(source);
    var res_array = wrapper.find("[search=xxxxx]") 
    return(res_array);
};



function makeRegexp(s){
  var space = '( )?(<span[^>]*>)?(</span[^>]*>)?( )?';
    var result = s.replace(/\s/gi, space);
    result = new RegExp(space + result + space, "gi");
    return(result);
}

function emulateSelection (htmlPiece){
  htmlPiece = htmlPiece.replace(/(?!=>)[^><]+(?=<)/g, function(w){
    return(wrapWords(w));}
  );
  htmlPiece = htmlPiece.replace(/^[^><]+/, function(w){
    return(wrapWords(w));}
  );  
  htmlPiece = htmlPiece.replace(/[^><]+$/, function(w){
    return(wrapWords(w));}
  );
  htmlPiece = htmlPiece.replace(/^[^><]+$/, function(w){
    return(wrapWords(w));}
  );

  return( htmlPiece );
}

function wrapWords(plainPiece){
  console.log("plain: " + plainPiece);
  var start = '<span search="xxxxx">',
    stop = '</span>';
  return(start + plainPiece + stop);
}


jQuery(document).each($('.container').findText({query: ['INOVFLOW']}), function (){
    $(this).addClass("changeColorInovflow");
});
jQuery(document).fn.findText=函数(params){
var phrases=params.query,
无知=无知的参数;
包装器=$(这个);
var source=wrapper.html();
选择\类别\名称=参数样式;
source=source.replace(/[\n |\t]+/gi,”);
source=source.replace(/\s+/gi',);
source=source.replace(/>/gi,'>');

source=source.replace(/(\w))[^>如果
findText
打算作为jQuery插件,则需要更新函数的声明方式

$.fn.findText = function(params) {
  var phrases = params.query;
  // removed unused 'ignorance' var
  var wrapper = this; // this is already a jQuery object
  var source = wrapper.html();

  selection_class_name = params.style;
  source = source.replace(/[\n|\t]+/gi, '');
  source = source.replace(/\s+/gi, ' ');
  source = source.replace(/> /gi, '>');
  source = source.replace(/(\w)</gi, function(m, w){return(w + " <");});

  phrases.forEach(function(str){
    var regexp = makeRegexp(str);
    source = source.replace(regexp, function (m){
      return (emulateSelection(m));
    });
  });

  wrapper.html(source);
  var res_array = wrapper.find("[search=xxxxx]") 
  return this; // return 'this' to make it chainable
}
原始代码无法工作,因为
each()
将函数或带有回调的数组作为参数,而不是选择器

.each()


jQuery.each()

您可以添加一个您试图修改的标记的示例吗?@twernt您需要什么?我可能可以给您更多details@RicardoAlves有一个“最小、完整和可验证的示例”()更有可能有人能回答这个问题。@t我的问题是,在JOOMLA之外,这段代码是有效的。我在一个代码段上尝试了这段代码,它成功了,并将它传递给JOOMLA,但没有运行(当时我使用$。而不是jQuery(文档)。现在使用jQuery(文档)它只是进入了一个无限循环。我已经用这些信息编辑了这个问题。您可能还想在更新的文本上使用一个类,以便更容易地设置样式。如果有多个
.container
元素,请修改
findText
调用。这里有一个可用的提琴:。
$('.container').each(function() {
    $(this).findText({query: ['INOVFLOW']}).addClass("changeColorInovflow");
});