jQuery使用.each打印json对象显示的结果比预期的要多

时间:2013-01-29 19:36:01

标签: jquery json

以下代码中存在一些错误。 rJSON对象包含单个sURL和单个iURL(通过检入console.log找到)。
但是,当imgList条件显示each后,它会有3个相同的sURLiURLs

您认为以下此代码存在任何问题吗?

C.forgotIt = function (page, rJSON) {
    var tempPage = page;
    var imgList = "";

    $.each(rJSON, function (index, value) {
        imgList += "<a href='" + rJSON.sURLS + "'><img class='hsImage' src='" + rJSON.iURLS + "' /></a>";
    });

    page.find('.hsImages').html("<div class='imgListCont'>" + imgList + "</div>");
};

编辑:rJSON通过控制台看起来像这样: {iURLS:数组[1],sURLS:数组[1],结果:&#34; OTHER_MEMBER&#34;}

更新:目前它有一套iURLS和sURLS,但它可以显示任意数量的iURLS(以及相同数量的sURLS)

1 个答案:

答案 0 :(得分:0)

很可能rJSON是一个具有3个属性的对象。我已经知道至少有2个属性sURLSiURLS,并且因为它迭代了三次,所以必须有第3个未使用的属性。 (通过编辑确认OP)

要使您当前的代码正常工作,您根本不需要$ .each,因为您没有数组。

 C.forgotIt = function (page, rJSON) {
     var tempPage = page;
     var imgList = "<a href='" + rJSON.sURLS + "'><img class='hsImage' src='" + rJSON.iURLS + "' /></a>";
     page.find('.hsImages').html("<div class='imgListCont'>" + imgList + "</div>");
 };

您的修改更新:

您需要在每个属性上使用$ .each,因为属性包含数组。

 C.forgotIt = function (page, rJSON) {
     var tempPage = page;
     var imgList = "";
     $.each(rJSON.sURLS,function(i) {
         imgList += "<a href='" + rJSON.sURLS[i] + "'><img class='hsImage' src='" + rJSON.iURLS[i] + "' /></a>";
     });
     page.find('.hsImages').html("<div class='imgListCont'>" + imgList + "</div>");
 };

这假设sURLSiURLS将始终具有相同数量的项目,并且它们的顺序相同。