javascript - 如何循环遍历新生成的数组而不覆盖它?

标签 javascript jquery arrays loops

我一直在学习自己编码,所以我的知识并不像你想象的那样技术性。话虽如此,我所在的项目处理图像,包括使用 fileList 对象向用户显示有关图像的信息,部分信息以这种格式显示:Chrysanthemum.jpg (image/jpeg) - 879394 字节,最后修改时间:2009 年 7 月 13 日。我的程序允许用户在上传剩余文件之前删除预先选择的文件,当从组中删除该项目时,有关它的信息也应该消失。我不会让你疯狂地阅读超过 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:我知道有一千个插件可以处理文件。我只是想测试一些学到的技能。

这是一个 fiddle : * jsfiddle

感谢您抽出时间,我真的很感激,我希望我已经解释清楚了

最佳答案

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

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

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

关于javascript - 如何循环遍历新生成的数组而不覆盖它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32918470/

相关文章:

javascript - 尝试在 xslt 中调用 javascript 函数时出错(Java JDK 8)

jquery - 我可以将 JQuery "this"与后代选择器一起使用吗?

滚动重绘之前的javascript事件?

javascript - attrs.$set ('ngClick' , 函数名 + '()' );不再适用于 angular 1.2rc3

JavaScript 库 + jQuery 插件矛盾 : how to debug?

c++ - 找到可以使用数字 7 和 9 组成的下一个更大的数字

python - 如何在 python 中对数组中的选定元素求和? (多输入)

java - 通过void方法引用新对象

javascript - D3 js 在快速鼠标单击时出现意外行为

jquery - calc() 与 jQuery(背景位置)