Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 替换字符串中的几个不同元素并返回它_Javascript_Jquery - Fatal编程技术网

Javascript 替换字符串中的几个不同元素并返回它

Javascript 替换字符串中的几个不同元素并返回它,javascript,jquery,Javascript,Jquery,我有一个字符串,我想换一些单词。 我编写下一个函数。如果我的字符串中只有一个要更改的单词,则此工作正常。但如果这句话不止一个,它只会最后改变 <div class="container"> <div id="main-arr">How are you my friend?</div> <div id="main-arr__last"></div> </div> $(document).ready(function(

我有一个字符串,我想换一些单词。 我编写下一个函数。如果我的字符串中只有一个要更改的单词,则此工作正常。但如果这句话不止一个,它只会最后改变

<div class="container">
  <div id="main-arr">How are you my friend?</div>
  <div id="main-arr__last"></div>
</div>

$(document).ready(function() {

var sometext = $('#main-arr').text();
var someArr = sometext.split(' ');

for ( var i = 0; i < someArr.length; i++ ) {
    if ( someArr[i] === 'you' || someArr[i] === 'he' || someArr[i] === 'she' ) {
        var newArr1 = someArr.slice(0, i);
        var newArr2 = someArr.slice(i + 1, someArr.length);
        newArr1 = newArr1.join(' ');
        newArr2 = newArr2.join(' ');
        var word = 'error!';
        console.log(newArr1);
        console.log(newArr2);
        $('#main-arr__last').html(newArr1 + '<span class="red">' + ' ' + word + ' ' + '</span>' + newArr2);
    }
}

你好吗,我的朋友?
$(文档).ready(函数(){
var sometext=$('#main arr').text();
var someArr=sometext.split(“”);
for(var i=0;i

}))

该函数不仅仅改变最后一个字。问题是,每次替换一个单词时,也会替换
\main-arr\u last
中的html

这里有一个更好的解决方案:

$(document).ready(function() {
    var sometext = $('#main-arr').text();
    sometext = replaceAll(sometext, ' you ', ' error! ');
    sometext = replaceAll(sometext, ' he ', ' error! ');
    sometext = replaceAll(sometext, ' she ', ' error! ');

    var someHtml = toHtml(sometext, 'red');

    $('#main-arr__last').html(someHtml);
});

function replaceAll(str, search, replacement){
    return str.replace(new RegExp(search, 'g'), replacement);
}

function toHtml(str, clazz){
    return replaceAll(str, 'error!', '<span class="' + clazz + '">error!</span>');
}
$(文档).ready(函数(){
var sometext=$('#main arr').text();
sometext=replaceAll(sometext'you','error!');
sometext=replaceAll(sometext'he','error!');
sometext=replaceAll(sometext'she','error!');
var someHtml=toHtml(sometext,'red');
$('#main-arr_ulast').html(someHtml);
});
函数replaceAll(str、搜索、替换){
返回str.replace(新的RegExp(搜索'g'),replacement);
}
函数toHtml(str,clazz){
返回replaceAll(str,'error!','error!');
}
首先,我们实现一个
函数replaceAll
来替换文本中出现的所有单词,然后我们将文本替换为所有单词,在我们的例子中,您、他和她都被error!替换


然后我们将
函数实现为HTML
,以包含所有“错误!”span中的单词,已确定的类作为参数传递。

该函数不会仅更改最后一个单词。问题是,每次替换一个单词时,也会替换
\main-arr\u last
中的html

这里有一个更好的解决方案:

$(document).ready(function() {
    var sometext = $('#main-arr').text();
    sometext = replaceAll(sometext, ' you ', ' error! ');
    sometext = replaceAll(sometext, ' he ', ' error! ');
    sometext = replaceAll(sometext, ' she ', ' error! ');

    var someHtml = toHtml(sometext, 'red');

    $('#main-arr__last').html(someHtml);
});

function replaceAll(str, search, replacement){
    return str.replace(new RegExp(search, 'g'), replacement);
}

function toHtml(str, clazz){
    return replaceAll(str, 'error!', '<span class="' + clazz + '">error!</span>');
}
$(文档).ready(函数(){
var sometext=$('#main arr').text();
sometext=replaceAll(sometext'you','error!');
sometext=replaceAll(sometext'he','error!');
sometext=replaceAll(sometext'she','error!');
var someHtml=toHtml(sometext,'red');
$('#main-arr_ulast').html(someHtml);
});
函数replaceAll(str、搜索、替换){
返回str.replace(新的RegExp(搜索'g'),replacement);
}
函数toHtml(str,clazz){
返回replaceAll(str,'error!','error!');
}
首先,我们实现一个
函数replaceAll
来替换文本中出现的所有单词,然后我们将文本替换为所有单词,在我们的例子中,您、他和她都被error!替换


然后我们将
函数实现为HTML
,以包含所有“错误!”span中的word,其中已确定的类作为参数传递。

为什么不使用regex和replace函数?为什么不使用regex和replace函数?