Javascript:替换'g'字符

时间:2015-02-26 13:48:56

标签: javascript replace

我想替换以下innerHTML div上的g个字符:

<div id="myDiv">aaa>aga</div>

我用过

var myDiv = document.getElementById('myDiv');
myDiv.innerHTML = myDiv.innerHTML.replace('g','a');

不幸的是,这会将>字符替换为&at; 如何避免此行为?

2 个答案:

答案 0 :(得分:5)

尝试使用.innerText代替.innerHTML,如此

var myDiv = document.getElementById('myDiv');
var text  = myDiv.innerText || myDiv.textContent || '';

myDiv.innerHTML = text.replace(/g/g, 'a');

// or without variable 
// myDiv.innerHTML = (myDiv.innerText || myDiv.textContent || '').replace(/g/g, 'a');
<div id="myDiv">aaa>aga</div>

答案 1 :(得分:3)

如果你想要更加安全(当处理包含其他元素的元素,或者你不希望被解释为HTML的文本时),你会想要遍历元素。孩子们在里面找到Text节点。

Text节点内的简单替换将为您提供所需的内容:

&#13;
&#13;
 function replaceIn(el, pattern, replacement) {
   if (el.nodeType == 3) {   // TEXT_NODE
     el.nodeValue = el.nodeValue.replace(pattern, replacement);
   } 
   else {
     var n = el.childNodes.length;
     
     for (var i = 0; i < n; ++i)
       replaceIn(el.childNodes[i], pattern, replacement);
   }
 }

 replaceIn(document.getElementById('foo'), /two/g, 'dos');
&#13;
<div id="foo">
  <p>one</p>
  <p><em>two</em>
  </p>
  one two &lt;em&gt;three&lt;/em&gt; four two two three four
</div>
&#13;
&#13;
&#13;