Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.02.2017, 20:26
Интересующийся
Отправить личное сообщение для Rocombo Посмотреть профиль Найти все сообщения от Rocombo
 
Регистрация: 11.12.2014
Сообщений: 10

Замена значения в шаблоне
Подскажите, пожалуйста, как добиться того, чтобы функция, из кода renderTemplate корректно изменяла шаблон?

Она принимает шаблон (html) и массив объектов. В объектах key, как раз значения "заглушек" в шаблоне, которые надо заменить на значения value

Работает некорректно. Должно быть 2 блока <li>. А получается 6
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<style>

</style>
<ul id="context"></ul>
<script>
    var personOne={
      fullname:'John',
      gender:'Male',
      email:'John@gmail.com'
    }

    var personTwo={
      fullname:'Boris',
      gender:'Male',
      email:'Boris@gmail.com'
    }
    var valueHash=[personOne,personTwo];

    var listItemTpl="<li>fullname</li><li>gender</li><li>email</li><li><button class='closeInfo'>Find more</button></li></br>";
    var string='';
  
    function renderTemplate (tpl, valueHash) {
    valueHash.forEach(function(item) {      
        for (var key in item) {
         string+=tpl.replace(key, item[key]);                 
        }       
    });
    return string;   
    }
    
    renderTemplate(listItemTpl,valueHash);
    document.getElementById('context').innerHTML=string;    
</script>
</body>

</html>
Ответить с цитированием
  #2 (permalink)  
Старый 11.02.2017, 20:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Rocombo,
одну и туже строку надо переписывать!!! а не на каждый ключ, брать новую
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<style>

</style>
<ul id="context"></ul>
<script>
    var personOne={
      fullname:'John',
      gender:'Male',
      email:'John@gmail.com'
    }

    var personTwo={
      fullname:'Boris',
      gender:'Male',
      email:'Boris@gmail.com'
    }
    var valueHash=[personOne,personTwo];

    var listItemTpl="<li>fullname<\/li><li>gender<\/li><li>email<\/li><li><button class='closeInfo'>Find more</button><\/li>";


    function renderTemplate (tpl, valueHash) {
    var string='';
    valueHash.forEach(function(item) {
        var str = tpl;
        for (var key in item) {
         str=str.replace(key, item[key]);
        }
       string += str
    });
    return string;
    }

    var html = renderTemplate(listItemTpl,valueHash);
    document.getElementById('context').innerHTML= html;
</script>
</body>

</html>
Ответить с цитированием
  #3 (permalink)  
Старый 11.02.2017, 20:51
Интересующийся
Отправить личное сообщение для Rocombo Посмотреть профиль Найти все сообщения от Rocombo
 
Регистрация: 11.12.2014
Сообщений: 10

рони,
И вправду, что-то, глаз замылился! Спасибо большое!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена значения атрибута kzn Элементы интерфейса 17 28.01.2017 12:58
Замена значения ячейки таблицы kolhoznik Общие вопросы Javascript 19 10.09.2015 06:21
Замена значения в массиве nikto93i7 jQuery 5 18.08.2015 01:04
Замена значения в массиве nikto93i7 Общие вопросы Javascript 6 22.07.2015 06:03
Замена значения в store страно работает I3ev ExtJS 0 09.12.2012 14:22