Kozack
@Kozack
Thinking about a11y

Какой Самый быстрый способ замены текста в javasсript?

Я получаю json
{"html":"<div id="user%%userid%%"><span>You're ID: %%userid%%</span><img src="%%userimg%%"></div>",
"data": [{"userid":"11", "userimg":"http://"},
	{"userid":"22", "userimg":"http://"}
	]}

Какой самый быстрый способ получить следующий html код:
<div id="user11"><span>You're ID: 11</span><img src="http://"></div>
<div id="user22><span>You're ID: 22</span><img src="http://"></div>
  • Вопрос задан
  • 2702 просмотра
Пригласить эксперта
Ответы на вопрос 3
Да как-то так:

var jsonData = {
    "html": "<div id=\"user%%userid%%\"><span>You're ID: %%userid%%</span><img src=\"%%userimg%%\"></div>",
    "data": [{"userid":"11", "userimg":"http://"},
	{"userid":"22", "userimg":"http://"}
	]};
     var result = "";

jsonData.data.forEach(function(item) {
    result += jsonData.html
                      .replace(/%%userid%%/g, item.userid)
                      .replace(/%%userimg%%/g, item.userimg)
});

console.log(result)


Можно написать простую функцию:
var simpleTemplate = (function() {
    var replaceByObject = function(template, values) {
	for (var key in values) {
	    if (values.hasOwnProperty(key)) {
		var pattern = ['%%', key, '%%'].join(''),
		    keyRegexp = new RegExp(pattern, 'g');
		
		template = template.replace(keyRegexp, values[key]);
	    }
	}
	
	return template;
    };

    return function(template, values) {
	return replaceByObject(template, values);
    };
})();


И использовать вот так:

var jsonData = {
    "html": "<div id=\"user%%userid%%\"><span>You're ID: %%userid%%</span><img src=\"%%userimg%%\"></div>",
    "data": [{"userid":"11", "userimg":"http://"},
	{"userid":"22", "userimg":"http://"}
	]};
     var result = "";

jsonData.data.forEach(function(item) {
    result += simpleTemplate(jsonData.html, item);
});

console.log(result)
Ответ написан
Комментировать
ghaiklor
@ghaiklor
NodeJS TechLead
Используйте replace для рендеринга html.
Ответ написан
Комментировать
mrDinckleman
@mrDinckleman
jsfiddle.net/6PaaV
JQuery используется только для вывода содержимого, подключать его необязательно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы