我有以下代码:

$(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数组中元素的顺序,它将始终替换数组最后位置上设置的变量。我需要它来替换所有发送的变量。

最佳答案

那么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);

10-04 22:41