更改此对象的最佳方法是什么
{
src: 'img.jpg',
title: 'foo'
}
变成这样的有效HTML标记字符串
<img src="img.jpg" title="foo" />
解决方案 1
使用 jQuery,这很容易;但很复杂:
$('<img/>').attr(obj).wrap('<div/>').parent().html();
有更好的想法吗?
更改此对象的最佳方法是什么
{
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 的范式。
你会用厨师发出的命令是:
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]);
}
}