简体   繁体   中英

Replace function only works once (javascript)

I need to replace a string (str1) with another string (str2) every time str1 shows in a specific div.

This is what I got so far

<script type="text/javascript"> 
$(window).load(function(){

var str=document.getElementById("foo").innerHTML; 
var n=str.replace("Google","Yahoo");
document.getElementById("foo").innerHTML=n;

}); 

</script>

and the html

<div id="foo">
Google is the best website ever <br />
Google is not the best website ever</div>

Unfortunately, when I run it, it only replaces the first instance of the word Google.

What am I doing wrong? What do I need to add to make it replace ALL the instances of the word?

Use regex /string/g to replace all occurrences, you are using substring which will replace only first occurances as per documentation of replace() function.

Live Demo

var n=str.replace(/Google/g,"Yahoo");

String.prototype.replace() The replace() method returns a new string with some or all matches of a pattern replaced by a replacement. The pattern can be a string or a RegExp, and the replacement can be a string or a function to be called for each match.

str.replace(regexp|substr, newSubStr|function)

You are using substr pattern which will replace first occurance only.

substr (pattern)

A String that is to be replaced by newSubStr. It is treated as a verbatim string and is not interpreted as a regular expression. Only the first occurrence will be replaced.

Use this regexp patter to replace all occurances.

regexp (pattern)

A RegExp object or literal. The match is replaced by the return value of parameter #2.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM