1

当谈到 jQuery 时,我有点新手,并且修改了我在网上找到的上传脚本。它在 Chrome 中完成了我期望的一切。我在 Internet Explorer 中对其进行了测试,它给出了以下错误:-

SCRIPT438:对象不支持属性或方法“addEventListener”upload.js,第 21 行字符 3。

我做了一些研究,似乎 IE 不支持 addEventListener。任何人都可以帮助我调整代码以使其正常工作。非常感谢。

(function () {
    var input = document.getElementById("images"),
        oID = $('#oID').val(),
        formdata = false;

    function showUploadedItem(source) {
        var list = document.getElementById("image-list"),
            li = document.createElement("li"),
            img = document.createElement("img");
        img.src = source;
        li.appendChild(img);
        list.appendChild(li);
    }

    if (window.FormData) {
        formdata = new FormData();
        document.getElementById("btn").style.display = "none";
    }

    input.addEventListener("change", function (evt) {
        document.getElementById("response").innerHTML = "Uploading . . ."
        var i = 0,
            len = this.files.length,
            img, reader, file;

        for (; i < len; i++) {
            file = this.files[i];

            if ( !! file.type.match(/image.*/)) {
                if (window.FileReader) {
                    reader = new FileReader();
                    reader.onloadend = function (e) {
                        showUploadedItem(e.target.result, file.fileName);
                    };
                    reader.readAsDataURL(file);
                }
                if (formdata) {
                    formdata.append("images[]", file);
                }
            }
        }

        formdata.append("oID", oID);
        if (formdata) {
            $.ajax({
                url: "upload.php",
                type: "POST",
                data: formdata,
                processData: false,
                contentType: false,
                success: function (res) {
                    document.getElementById("response").innerHTML = res;
                }
            });
        }
    }, false);
}());
4

1 回答 1

1

尝试 -

$(input).change(function (evt) {
    // your code
});

或者 -

$("#images").change(function (evt) {
    // your code
});

您正在使用 jQuery,对吗?如果是这种情况,请像这样更改您的代码 -

  1. 与其使用 选择元素,不如document.getElementById(id)尝试使用 选择它们$("#your_id_string")
  2. 而不是使用隐藏元素document.getElementById(id).style.display = "none";,尝试$("#your_id_string").hide()
  3. 与其更改 html 文本,不如document.getElementById("response").innerHTML = "text"尝试使用$("#response").html("text")

你的代码会更干净。

另外,请注意您的代码中有错误。您的匿名函数声明不正确。尝试这个 -

$(document).ready(function() {
    var input = document.getElementById("images"),
    oID = $('#oID').val(),
    formdata = false;

    // rest of your code.
});
于 2013-09-01T10:17:07.240 回答