I want to replace all "w" with "e":
var d = document.getElementById('hash').innerHTML.replace("/w/g","e");
But it doesn't replace anything! Earlier I tried using replace("w","e"), but it replaced only the first "w".
So, what to do?
I want to replace all "w" with "e":
var d = document.getElementById('hash').innerHTML.replace("/w/g","e");
But it doesn't replace anything! Earlier I tried using replace("w","e"), but it replaced only the first "w".
So, what to do?
If you actually want to modify the content (innerHTML) of an element (the original version of your question made it very likely), you should use this:
var el = document.getElementById('hash');
el.innerHTML = el.innerHTML.replace(/w/g, 'e');
... as replace (as any other string method) doesn't change the operated string in place - instead it creates a new string (result of replacement operation) and returns it.
If you only want to make a new, transformed version of the element's contents, the only change should be using proper regex object, written either with regex literal (delimited by / symbols) or with new RegExp(...) construct. In this particular case the latter would definitely be an overkill. So just drop the quotes around /w/g (already done in the code snippet above), and you'll be fine. )
As for '....replace('w', 'e') does replace only once...' part, that's actually quite a common gotcha: when used with a string as the first argument, .replace() will do its work no more than once.
You're giving replace a string instead of a regex. Use a real regex:
var d = document.getElementById('hash').innerHTML.replace(/w/g,"e");