Javascript 想把所有的单词都放在蓝色大写的网站上吗
我在JOOMLA建了一个网站,在这个网站上我想把所有的“Inovflow”放在网站上,蓝色和大写。就像这个“INOVFLOW” 我将此代码放在网站的js文件夹中: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
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");
});