Замена значения в шаблоне
Подскажите, пожалуйста, как добиться того, чтобы функция, из кода 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> |
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> |
рони,
И вправду, что-то, глаз замылился! Спасибо большое! |
Часовой пояс GMT +3, время: 21:52. |