2015-10-03 15 views
0

我一直在学习自己的代码,所以我的知识不像你所期望的那样技术性强。说了这样的话,我在一个处理图像的项目中,包括用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); 
}); 

我一直没能找到重新安排“的有效途径arr“项中的”li“标签中,我试图循环遍历它们,但是如果启用”for循环“来发生数组本身,它将被新输出覆盖,直到达到最后一项。我试了一堆东西来解决这个看似简单的问题,我不能......我放弃了,并决定从更好的队友那里得到帮助

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

这是一个小提琴: * jsfiddle

感谢您的时间,我真的很感激,我希望我已经解释了自己

回答

1

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

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

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

如果你想要把新的数据与从覆盖旧数据使用.append()我可以看到你正在使用.html()这将设置在旧的HTML。用.append()代替