Yes I am a cat Yes I am a cat - 4 months ago 15
jQuery Question

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?

Answer

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.

Comments