Nem tudom miért, legalább félévente egyszer belefutok abba a hibába, hogy megfeledkezem arról, hogy JavaScript-ben a String replace alapértelmezetten csak az első előfordulást cseréli. Az első előfordulás leginkább abból következik, hogy a replace nem stringet vár az első paraméterként, hanem egy reguláris kifejezés, ahol külön paraméter jelzi, hogy több előfordulásról van-e szó.
alert(src.replace('foo', 'bar'));
alert(src.replace(/foo/g, 'bar'));
// a poszt megírása után kaptam a következő formát:
alert(src.replace('foo', 'bar', 'g'));
Találkoztam már olyan megoldással is, ahol a split és a join kombinációját használta valaki a replace helyett, de ez semmiképpen sem szép megoldás: src.split('foo').join('bar');