首页 > 代码库 > 在循环中创建网页元素的问题

在循环中创建网页元素的问题

for (var i = 0; i < json.length; i++) {    var topic = json[i];    var btn = $(‘<button>‘);    btn.addClass(‘btn btn-primary‘);    btn.attr(‘type‘, ‘button‘);    btn.html(topic.topicComment);    $.getJSON(‘action.action‘, {        topicId : topic.p2pTopicId    }, function(res) {        var jsn = $.parseJSON(res);        var cnt = parseInt(jsn);        if (cnt > 0) {            btn.removeClass(‘btn-default‘).addClass(‘btn-primary‘);        } else {            btn.removeClass(‘btn-primary‘).addClass(‘btn-default‘);        }    });    $(‘#hrAfterBtn‘).before(btn);}

这样创建是有问题的,其中的$.getJSON会在所有的循环都结束之后才调用,

这样其中的btn对象就是循环结束之后的最后的那个btn对象;

需要将其中的创建过程提炼成一个函数:

for (var i = 0; i < json.length; i++) {    var topic = json[i];    createMsgButton(topic);}function createMsgButton(topic) {    var btn = $(‘<button>‘);    //...   }

 

在循环中创建网页元素的问题