Заменить функцию работает только один раз (javascript)

Мне нужно заменить строку (str1) на другую строку (str2) каждый раз, когда str1 отображается в определенном div.

Это то, что я получил до сих пор

<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>

и html

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

К сожалению, когда я запускаю его, он заменяет только первый экземпляр слова Google.

Что я делаю неправильно? Что мне нужно добавить, чтобы он заменил ВСЕ экземпляры слова?

Ответ 1

Использовать regex /string/g для замены всех вхождений, вы используете подстроку, которая заменит только первые события в соответствии с документацией replace() function,

Live Demo

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

String.prototype.replace() Метод replace() возвращает новую строку с некоторыми или всеми совпадениями шаблона, замененного заменой. Шаблон может быть строкой или RegExp, а замена может быть строкой или функцией, которая должна вызываться для каждого соответствия.

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

Вы используете шаблон substr, который заменит только первое появление.

substr (pattern)

Строка, которая должна быть заменена на newSubStr. Он рассматривается как verbatim string и не интерпретируется как регулярное выражение. Только первое вхождение будет заменено.

Используйте этот regexp patter для замены всех событий.

regexp (pattern)

Объект RegExp или литерал. Матч заменяется на возвращаемое значение параметра № 2.