3

私は文字通り、過去 5 時間、これを理解しようとしてきました。

オンラインで見つけた数え切れないほどの方法を試しましたが、うまくいきませんでした。これまでのところ、この方法が最もうまく機能しました (エラーは 1 つしか表示されません)。

「Uncaught ReferenceError: deletefile が定義されていません」というエラーが表示されます。このエラーは、[削除] ハイパーリンクをクリックした場合にのみ発生することに注意してください。

//UPLOAD CODE
$(document).ready(function() {
// Custom example logic
function $(id) {
    return document.getElementById(id);
}


var uploader = new plupload.Uploader({
    runtimes : 'gears,html5,flash,silverlight,browserplus',
    browse_button : 'pickfiles',
    container: 'container',
    drop_element: 'uploadBox',
    max_file_size : '10mb',
    url : 'upload.php',
    flash_swf_url : '../js/plupload/plupload.flash.swf',
    silverlight_xap_url : '../js/plupload/plupload.silverlight.xap',
    filters : [
        {title : "Image files", extensions : "jpg,gif,png"},
        {title : "Zip files", extensions : "zip"}
    ]


    //,
    //multipart_params : {
    //  "title" : $("#title").val(),
    //  "descripition" : $("#description").val()
        //}
});

uploader.bind('Init', function(up, params) {
    if (uploader.features.dragdrop) {
        var target = $("uploadBox");

        target.ondragover = function(event) {
            event.dataTransfer.dropEffect = "move";
            this.className = "dragover";
        };

        target.ondragenter = function() {
            this.className = "dragover";
        };

        target.ondragleave = function() {
            this.className = "";
        };

        target.ondrop = function() {
            this.className = "";
        };
    }
});

uploader.bind('FilesAdded', function(up, files) {
    function deletefile(i) {
        uploader.splice(i,1);
    }
    for (var i in files) {
        $('filelist').innerHTML += '<div id="' + files[i].id + '">' + files[i].name + ' (' + plupload.formatSize(files[i].size) + ') <a href="#" onclick="deletefile(\'' + i + '\');">Remove</a><b></b></div>';
    }
});

uploader.bind('UploadProgress', function(up, file) {
    $(file.id).getElementsByTagName('b')[0].innerHTML = '<span>' + file.percent + "%</span>";
});

$('uploadfiles').onclick = function() {
    uploader.start();
    return false;
};

uploader.init();
});

ありがとう。

4

3 に答える 3

3

filelistが id であると仮定すると(したがって、 を使用$('#filelist'))、これを置き換えてみることができます。

uploader.bind('FilesAdded', function(up, files) {
    function deletefile(i) {
        uploader.splice(i,1);
    }
    for (var i in files) {
        $('filelist').innerHTML += '<div id="' + files[i].id + '">' + files[i].name + ' (' + plupload.formatSize(files[i].size) + ') <a href="#" onclick="deletefile(\'' + i + '\');">Remove</a><b></b></div>';
    }
});

これとともに :

uploader.bind('FilesAdded', function(up, files) {
var deleteHandle = function(uploaderObject, fileObject) {
        return function(event) {
            event.preventDefault();
            uploaderObject.removeFile(fileObject);
            $(this).closest("div#" + fileObject.id).remove();
        };
    };

    for (var i in files) {
        $('#filelist').append($('<div id="' + files[i].id + '">' + files[i].name + ' (' + plupload.formatSize(files[i].size) + ') <a href="#" id="deleteFile' + files[i].id + '">Remove</a></div>'));
        $('#deleteFile' + files[i].id).click(deleteHandle(up, files[i]));
    }    
});

私もそうある$('uploadfiles')べきだと思います$('#uploadfiles')が、それは問題の範囲外です。これが役立つことを願っています。

于 2013-03-15T09:39:03.153 に答える