如何在不覆盖的情况下循环生成新生成的数组?

时间:2015-10-03 03:04:27

标签: javascript jquery arrays loops

我一直在学习自己的编码,所以我的知识并不像你期望的那样具有技术性。说完之后,我在一个处理图像的项目中,包括用fileList对象向用户显示有关它们的信息,部分信息以这种格式显示: Chrysanthemum.jpg(image / jpeg) - 879394字节,最后修改时间:13/7/2009 。我的程序允许用户在上传剩余的文件之前删除预先选择的文件,当从组中删除该项目时,其中的信息也应该也是如此。我不会让你疯狂阅读+600行代码,这样你就可以解决我的问题,因此我会给你一个非常简单的总结方法来解决我的问题。

在这种情况下,我们想要在调用函数时删除第一个项目,以便查看下一个代码:

<input type='button' id='load' value='Load_info' />
<div id='ok'>
    <ul id='pic_info'></ul>
</div>
<div id='message'></div>
<input type='button' id='bye' value='Bye[0]' />


var files = ["Chrysanthemum.jpg (image/jpeg) - 879394 bytes, last modified: 13/7/2009", "Desert.jpg (image/jpeg) - 845941 bytes, last modified: 13/7/2009", "Hydrangeas.jpg (image/jpeg) - 595284 bytes, last modified: 13/7/2009", "Jellyfish.jpg (image/jpeg) - 775702 bytes, last modified: 13/7/2009", "Koala.jpg (image/jpeg) - 780831 bytes, last modified: 13/7/2009", "Lighthouse.jpg (image/jpeg) - 561276 bytes, last modified: 13/7/2009", "Penguins.jpg (image/jpeg) - 777835 bytes, last modified: 13/7/2009"];

var once = 0;
var a = '';
var d = '';
//someFlag = true;
//var upd = [];
var e;
var f = '';
var g = 0;

function load() {
    for (var i = 0; i < files.length; i++) {
        a += "<li>" + files[i] + "</li>";
        $("#pic_info").html(a);
        e = $("#pic_info li").length;
    }
}



function delete_item(arr, inx) {
    if (e <= 0) {
        e = 7;
    } else {
        e -= 1;
    }
    //for (var c = 0; c < arr.length; c++) {
      //  d += "<li>" + arr[c] + "</li>";
        //$("#pic_info").html(d);
    //}
    arr.splice(inx, 1);
    $("#pic_info").html(arr);
}

$("#load").click(function () {
    if (once == 0) {
        load();
        once = 1;
    } else {
        $("#message").html("<strong>files already loaded</strong>");
    }
});

$("#bye").click(function () {
    delete_item(files, 0);
}); 

我无法找到重新排列“li”标签中“arr”项目的有效方法,我试图循环遍历它们但是如果启用“for循环”发生数组本身则会被覆盖新的输出直到它到达最后一项。我已经尝试了很多东西来解决这个看似简单的问题而且我不能......我放弃并决定从形成更好的人那里得到帮助

PD:我知道有一千个插件来处理文件。我只是想测试一些学到的技能。

这里是一个小提琴: * jsfiddle

感谢您的时间,我非常感谢,并希望我已经解释过自己

2 个答案:

答案 0 :(得分:1)

我不是100%肯定你的要求,但我相信你在加载文件后询问如何删除第一个li元素。这是对的吗?

如果是这样,您可以在删除项目中使用jQuery选择器,它将删除第一个li,但不会影响文件数组。

$("li").first().remove();

答案 1 :(得分:0)

如果您想在不使用.append()覆盖旧数据的情况下添加新数据,我可以看到您正在使用.html(),这会将html设置为旧数据。请改用.append()