Javascript - 替换文本框中的多个字符串

时间:2016-05-20 13:08:39

标签: javascript html

我试图创建一种"查找和替换"系统让我的用户粘贴他们当前的HTML并用另一个网站替换另一个网站的网址。基本上,我需要用advena.io/替换files.enjin.com/(6位唯一代码)。这就是我已经拥有的(我使用随机图像作为临时示例):

<button id="replace">Replace</button>
<p>
  Original Text:
  <textarea id="input">http://files.enjin.com/435613/slider_images/slide1_1920x200.png</textarea>
</p>
<p>
  New Text:
  <textarea id="output"></textarea>
</p>

<script>
var mapping = {};

mapping['http://files.enjin.com/' + /(......)/i'] = 'https://advena.io/<?php echo $domain1 ?>/';

document.getElementById('replace').addEventListener('click', function(evt) {

  var newString = (function(map, oldString) {
    Object.keys(map).forEach(function(key) {
      oldString = oldString.replace(new RegExp('\\b' + key + '\\b', 'g'), map[key]);
    });
    return oldString;
  }(mapping, document.getElementById('input').value));

output.value = newString;

});

</script>

我知道问题在于我试图在第一个映射中使用的表达式。我不知道还能用什么。我对Javascript不太满意。

提前感谢任何有帮助的人。

编辑:我需要此脚本才能更改指定映射的多次出现。

1 个答案:

答案 0 :(得分:0)

我自己想通了。对于对答案感兴趣的人,这是我的解决方案:

<button id="replace">Replace</button>
<input type="text" id="enjid" placeholder="ie. 435613">
<p>
  Original Text:
  <textarea id="input">http://files.enjin.com/435613/slider_images/slide1_1920x200.png</textarea>
</p>
<p>
  New Text:
  <textarea id="output"></textarea>
</p>

<script>

document.getElementById('replace').addEventListener('click', function(evt) {

var mapping = {};

   var id = document.getElementById("enjid").value;

   mapping['http://files.enjin.com/' + id + '/'] = 'https://advena.io/<?php echo $domain1 ?>/';
   mapping['PHP'] = 'Personal Home Page';
   mapping['JS'] = 'JavaScript';

  var newString = (function(map, oldString) {
    Object.keys(map).forEach(function(key) {
      oldString = oldString.replace(new RegExp('\\b' + key + '\\b', 'g'), map[key]);
    });
    return oldString;
  }(mapping, document.getElementById('input').value));

output.value = newString;

});

</script>