2012-01-16 2 views
0

Я работаю на петле, чтобы заменить язык тегов {lang_vname} с реальным сроком (имя)Javascript заменить все?

language.js:

var lang = { 
//common 
    vname     : "name", 
    name     : "lastname", 
    adress     : "adress", 
    language    : "language", 

заменить скрипт

function translate(output) { 
var term = output; 
$.each(lang,function(i,l){ 
    var find = "{lang_"+i+"}"; 
    term = term.replace(find,l); 
}); 
return term;} 

Я не могу понять, как заменить вывод, если имеется более одного выражения одного вида. Он заменяет только первый, и если есть второй тег, он отображает тег. Я нашел решение вроде replace(/find/g,l);, но он не работает здесь и останавливает весь мой скрипт.
Есть ли способ решить это легко?

EDIT

благодаря Феликсу Клинг! ссылка, которую он предоставил, заставляла ее работать: D мой конечный результат:

function translate(output) { 
    var term = output; 
    $.each(lang,function(i,l){ 
     var find = "{lang_"+i+"}"; 
     var regex = new RegExp(find, "g"); 
     term = term.replace(regex, l); 
    }); 
    return term; 
} 

благодарит за вашу помощь!

+0

что формат и тип переменной выходной? – amd

+0

Возможный дубликат [В Javascript, как я могу выполнить глобальную замену на строку с переменной внутри '/' и '/g' ?](http://stackoverflow.com/questions/542232/in-javascript-how- can-i-perform-a-global-replace-on-string-with-a-variable-insi) –

ответ

1

Если это не будет работать для вас, пожалуйста, приведите пример для переменной вывода

function translate(output) { 
    var term = output; 
    $.each(lang, function(i, l){ 
     var find = new RegExp("{lang_"+i+"}", "g"); 
     term = term.replace(find, l); 
    }); 
    return term; 

} 
+0

что-то вроде этого: var output = "

"; его работа для одиночных выражений, но как только он дважды в два раза не заменяет оба – pwittke

+0

Он отлично работает для меня! http://jsfiddle.net/r2aVP/ – noob

+0

да, я сочетал оба, но ссылка Felix Kling помогла мне разобраться в проблеме :) спасибо за вашу помощь – pwittke