我在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);
}());
答案 0 :(得分:1)
尝试 -
$(input).change(function (evt) {
// your code
});
或 -
$("#images").change(function (evt) {
// your code
});
你正在使用jQuery,对吗?如果是这种情况,那么改变你的代码 -
document.getElementById(id)
。$("#your_id_string")
选择元素
document.getElementById(id).style.display = "none";
隐藏元素,请尝试$("#your_id_string").hide()
document.getElementById("response").innerHTML = "text"
$("#response").html("text")
更改html文字
醇>
并且您的代码会更清晰。
另外,请注意您的代码中存在错误。您的匿名函数声明不正确。试试这个 -
$(document).ready(function() {
var input = document.getElementById("images"),
oID = $('#oID').val(),
formdata = false;
// rest of your code.
});