Javascript:for循环无法正常工作

时间:2019-02-09 15:53:00

标签: javascript for-loop

我目前正在尝试建立一个循环,该循环使用piexifjs从图像返回exif数据。

到目前为止,我的Vue.js environment中piexif开发人员提供的代码可以正常工作。

用于在控制台内显示exif数据的循环如下:

for (let ifd in exifObj) {
    if (ifd == "thumbnail") {
        continue;
    }
    console.log("-" + ifd);
    for (let tag in exifObj[ifd]) {
        console.log("  " + piexif.TAGS[ifd][tag]["name"] + ":" + exifObj[ifd][tag]);
    }
}

工作正常,但是如果我尝试对其进行编辑以返回HTML并在我的网站上显示exif信息,则它仅返回一行信息。这是代码:

for (let ifd in exifObj) {
    if (ifd === "thumbnail") {
        continue;
    }
    const   exifInfo = $(".modal-exif"),
            exifInfoDetail = $(".modal-exif-detail");
    exifInfo.html("» " + ifd);
    for (let tag in exifObj[ifd]) {
        exifInfoDetail.html("<li>" + piexif.TAGS[ifd][tag]["name"] + ":" + exifObj[ifd][tag] + "</li>");
    }
}

我猜我的循环正在覆盖它自己,它仅返回一个值,我想这在控制台内很好,因为在HTML内不是吗?

有人知道要更改循环以为每个条目返回一行吗?

谢谢:)

1 个答案:

答案 0 :(得分:3)

console.log情况下,每次迭代都写入控制台,而在$(selector).html()情况下,您每次迭代都覆盖html内容。 jQuery html函数状态为:

  

设置匹配元素集中每个元素的HTML内容。

这意味着$(".modal-exif-detail")的html内容每次迭代都设置为一个"<li>" + piexif.TAGS[ifd][tag]["name"] + ":" + exifObj[ifd][tag] + "</li>"

如果要连续添加到节点,或者构建html字符串并仅在循环后执行一个html,则需要使用append之类的东西