[英]Create HTML tag from Javascript object
更改此對象的最佳方法是什么
{
src: 'img.jpg',
title: 'foo'
}
到這樣的有效HTML標記字符串
<img src="img.jpg" title="foo" />
解決方案1
使用jQuery這很容易; 但很復雜:
$('<img/>').attr(obj).wrap('<div/>').parent().html();
有更好的想法嗎?
或許比PSL更簡潔一點?
$('<img />',object)[0].outerHTML;
簡單的jquery
$("<div>").append($('<img />',object)).html();
如果你只做一個元素,那么這個解決方案是矯枉過正的,但我想我還是會發布它,因為我不知道你的項目是什么。
你考慮過JavaScript模板引擎嗎? 我最近一直在玩Swig ,因為它非常輕巧,但有很多選擇。 基本上,您創建一個模板,傳遞一個JavaScript對象,然后執行編譯的模板,返回一個HTML字符串。
<h1>{{ pagename|title }}</h1>
<ul>
{% for author in authors %}
<li{% if loop.first%} class="first"{% endif %}>
{{ author }}
</li>
{% else %}
<li>There are no authors.</li>
{% endfor %}
</ul>
var template = require('swig');
var tmpl = template.compileFile('/path/to/template.html');
tmpl.render({ // The return value of this function is your output HTML
pagename: 'awesome people',
authors: ['Paul', 'Jim', 'Jane']
});
<h1>Awesome People</h1>
<ul>
<li class="first">Paul</li>
<li>Jim</li>
<li>Jane</li>
</ul>
使html元素基於包含屬性屬性值的對象,例如
{
src: 'img.jpg',
title: 'foo'
}
幾乎完全屬於cook.js的范例。
你將與cook發出的命令是:
img ({
src: 'img.jpg',
title: 'foo'
})
如果屬性詳細信息按照示例中的說明存儲,
在一個變量obj
然后:
img(obj)
有關詳細信息,請訪問cook.relfor.co 。
以下是如何將其作為字符串:
var img = '<img ',
obj = { src : 'img.jpg', title: 'foo' };
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
img += prop + '=' + '"' + obj[prop] + '" ';
}
}
img += '/>';
編輯:請注意,代碼回答了准確的問題。 當然,以這種方式創建HTML是不安全的。 但這不是問題所在。 如果安全性是OP的關注點,顯然他/她會使用document.createElement('img')
而不是字符串。
編輯2:為了完整起見,這是一種從對象創建HTML的更安全的方法:
var img = document.createElement('img'),
obj = { src : 'img.jpg', title: 'foo' };
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
img.setAttribute(prop, obj[prop]);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.