javascript - 如何从多阵列中删除文件详细信息

标签 javascript jquery arrays multidimensional-array

我在一个 div 中显示所有文件,这些文件来自数组 upfiles 。在 jquery 中使用每个显示带有删除按钮的所有文件,当我单击删除按钮时,应从数组中删除相应的文件详细信息。

这是每次循环的 jquery 代码,我试图从数组中删除文件详细信息

var int_loop =  1;
        var display_removebutton="";
    $(upfiles).each(function(index, file) 
        {
            if(total_size > 1000) // size limit comparision
                 display_removebutton = "<img width='20px' style='cursor:pointer;' height='20px' id='remove_"+int_loop+"' src='images/DeleteRed.png' />"
            size = Math.round( file.size / 1024 );
            if(size > 1000)
            {
                if(size > 1024) 
                    size_display =  Math.round(size / 1024 * 100)/100 + ' mb';
                else
                    size_display = size + ' kb';    
                alert(file.name+"("+size+")"+" will be removed atomatically from list. As it exceeds limit.");
            }
            if(size > 1024) 
                    size_display =  Math.round(size / 1024 * 100)/100 + ' mb'; // converted to mb
            else
                    size_display = size + ' kb';    
            $('#total').append("<div id='div_selec"+int_loop+"'><b>File Name :</b> "+file.name + "<b> Size:</b>" + size_display + display_removebutton + "</div>" ); 
            $("#remove_"+int_loop).click(function() {

                var curr_id = this.id;
                var id = curr_id.substr(7);
                alert(id+'file name '+file.name);
               $("#div_selec"+id).empty();
                   upfiles.splice(index, 1) //updated as the suggested in comment
//                    delete upfiles[id];
                alert(upfiles.length);

            });
             int_loop++;
    });

已编辑 1:

实际上我是在 jquery php 中实现拖放文件上传。在验证所有文件的总大小是否大于 1000kb 时显示删除按钮,用户必须删除一些文件

编辑 2 :

我在控制台日志中收到此错误:TypeError: upfiles.splice is not a function

编辑 3 :

upfiles 来自这个 jquery drop 事件:

$( '#total' ).bind( 'drop',function(event) {

        event.stopPropagation();    
        event.preventDefault();

        if( upfiles == 0 )
                {
                upfiles = event.originalEvent.dataTransfer.files;

                                console.log(upfiles); // in this console log it is displaying `FileList [File, File, File, File, File, File, File]` File is nothing but the files which i have dropped in a div
                }
        else {
            if(confirm( "Drop: Do you want to clear files selected already?" ) == true) {
                upfiles = event.originalEvent.dataTransfer.files;
                $( '#fileToUpload' ).val('');
            }
            else
                return;
        }
        $( "#fileToUpload" ).trigger( 'change' );
});

最佳答案

splice 未定义,因为 upfilesFileList 类型,FileList 的原型(prototype)未定义它。但是,您可以使用 var array = Array.prototype.slice.call(arrayLikeObject, 0)任何类似数组的对象转换为数组。现在 arraysplice 和所有其他数组方法。参见 http://jsfiddle.net/8e2s7/1/举一个简短的例子。

关于javascript - 如何从多阵列中删除文件详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24176369/

相关文章:

c - 在 Rust 中使用类似 C 的结构数组

javascript - es6 合并两个对象数组并覆盖现有对象

javascript - jquery dataTable 过滤器/搜索不工作

javascript - 为什么 JavaScript 的 parseInt 的基数默认为 8?

javascript - jQueryUI Resizable alsoResize 不能传$(this).next()

javascript - 仅显示选中复选框的文本区域,未选中时隐藏

javascript - 在 JavaScript 中用下划线替换空格?

jquery - 在 div 内滚动文本?

jQuery - 链接到 ul.tabs 之外的选项卡

java - 基本数组中随机生成的数字