我有这段代码:
$(document).on('click','.submitMessage,.submitStdMessage', function(e){
prevContent=$('textarea').val();
alert(prevContent);
variables = {
'{nom}' : 'Manuel',
'{apl}' : 'García',
'{var1}' : 'chips',
'{var2}' : 'deportes y aventura',
'{var3}' : 'informática y tecnología',
'{cst1}' : 'Serrano, 28',
'{cst2}' : 'Plaza del carmen, 32',
'{cst3}' : 'García Luna, 15'
};
$.each(variables, function (key, value) {
newContent = prevContent.replace(key, value);
});
alert(newContent);
});
当传递这样的字符串时:
{NOM} {VAR2} {CST2} {CST1} {CST3}
第一个警告说:
{NOM} {VAR2} {CST2} {CST1} {CST3}
第二个警告说:
{nom} {var2} {cst2} {cst1}GarcíaLuna,15
如果我更改variables
数组中元素的顺序,它总是替换数组最后位置的变量集。我需要它来替换所有变量send。
答案 0 :(得分:2)
替换通常适用于RegEx(您可以在此处查看更多信息https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace),因此如果您将字符串作为参数传递,它将只替换一个匹配。
你可以使用“mystring”.split(“wordToReplace”)。join(“whatToReplaceWith”);
答案 1 :(得分:1)
好prevContent
永不改变。您需要更新它而不是另一个变量:
// Always declare local variables with var!!!
var prevContent=$('textarea').val();
alert(prevContent);
var variables = {
'{nom}' : 'Manuel',
'{apl}' : 'García',
'{var1}' : 'chips',
'{var2}' : 'deportes y aventura',
'{var3}' : 'informática y tecnología',
'{cst1}' : 'Serrano, 28',
'{cst2}' : 'Plaza del carmen, 32',
'{cst3}' : 'García Luna, 15'
};
$.each(variables, function (key, value) {
prevContent = prevContent.replace(key, value);
});
alert(prevContent);