Задать вопрос
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 просмотра
Подписаться 7 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 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 используется только для вывода содержимого, подключать его необязательно
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 11:03
5000 руб./за проект
18 дек. 2024, в 10:44
130000 руб./за проект
18 дек. 2024, в 10:02
7000 руб./за проект