jQuery无法在IE9中运行。 addEventListener问题

时间:2013-09-01 10:14:28

标签: jquery

我在jQuery方面有点新手,并修改了我在网上找到的上传脚本。它正在做我在Chrome中所期望的一切。我在Internet Explorer中测试了它,它给出了以下错误: -

  

SCRIPT438:Object不支持属性或方法'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);
}());

1 个答案:

答案 0 :(得分:1)

尝试 -

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

或 -

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

你正在使用jQuery,对吗?如果是这种情况,那么改变你的代码 -

  1. 请尝试使用document.getElementById(id)
  2. 选择元素,而不是使用$("#your_id_string")选择元素
  3. 不要使用document.getElementById(id).style.display = "none";隐藏元素,请尝试$("#your_id_string").hide()
  4. 请尝试使用document.getElementById("response").innerHTML = "text"
  5. ,而不是使用$("#response").html("text")更改html文字

    并且您的代码会更清晰。

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

    $(document).ready(function() {
        var input = document.getElementById("images"),
        oID = $('#oID').val(),
        formdata = false;
    
        // rest of your code.
    });