javascript - innerHTML 的替代品

标签 javascript ajax json prototypejs

我觉得我在用我的代码滥用 DOM...

for(var i=0; i<json.length; ++i){       
    var newobj = document.createElement("div");
    var inner = "<img src='"+json[i].picture+"' alt='Item preview' class='icon' />";

    inner += "<p>"+json[i].id+"<br />qty:"+json[i].qty;
    inner += "<a href=\"javascript:clearProduct('"+json[i].id+"')\">";
    inner += "<img alt='Seperator' src='images/form-sep.gif' />";
    inner += "<img src='images/cross.png' alt='Remove this item.' title='Remove this item.' />";
    inner += "</a></p>";
    newobj.innerHTML = inner;
    newobj.className = "cart_item";
    $('cartitems').appendChild(newobj);
    $('cartcount').innerHTML = json.length;
}

有更好的方法吗?我的意思是,是的,我可以通过并为每个元素使用 createElement 并分别设置每个属性,但就在如此简单的情况下,这似乎很多。有没有更好的办法?

最佳答案

我喜欢创建一个漂亮的元素创建界面;像这样:

function el( name, attrs ) {

    var elem = document.createElement(name),
        styles = attrs.style;

    for (var prop in styles) {
        try {
            elem.style[prop] = styles[prop];
        } catch(e) {}
    }

    for (var attr in attrs) {
        if (attr === 'style') { continue; }
        elem[attr] = attrs[attr];
    }

    return elem;

}


var myImage = el('img', {
    src: '/path/to/image.jpg',
    alt: 'Really cool image',
    style: {
        border: '1px solid red',
        padding: '10px'
    }
});

关于javascript - innerHTML 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1054463/

相关文章:

android - 无法解析符号 'GeoJsonLayer '

Javascript - FileReader 如何一次读取和处理多个文件中的每个文件

Jquery AJAX 在 IE9 中不工作

Javascript 如何在用户尝试退出或刷新页面时触发函数

javascript - 如何通过 jQuery 在 ajax 调用中将已定义的变量设置为未定义?

python - 使用 Python 从 JSON 创建数据结构

javascript - AngularJS:无法从 REST 查看数据

javascript - 反序列化 XML 的 jQuery 插件?

javascript - Ajax - 检查 Url 是否存在的函数

javascript - 如何将不同的背景图像(.png)添加到 SVG 圆形,并设置描边?