Javascript 在 Internet Explorer 中破坏属性的空值 - 如何让 IE 忽略这一点

Javascript breaking on null value of property in Internet Explorer - How can I get IE to ignore this?

本文关键字:IE 这一点 空值 Explorer Internet 属性 Javascript      更新时间:2023-09-26

Internet Explorer 正在为以下代码生成此错误:

SCRIPT5007: Unable to get value of the property '0': object is null or undefined for "document.getElementById('files').files[0]"

没错...files[0] 为空,但我不在乎,我怎么能告诉 IE 不在乎呢?

谢谢

var elem = document.getElementById('files'),
    file = elem.files && elem.files[0];

这将短路并在文件未定义的情况下返回undefined,否则它将返回第一个文件。

需要澄清的是,该错误指示files是未定义的变量,访问属性0会导致错误。 如果它本身files[0],表达式将只返回undefined

试试...

var file;
if (document.getElementById('files').files){
    file = document.getElementById('files').files[0];
}

这很古老,但我想回答任何像我一样来到这里的人

正如丹尼斯所说,该错误表明文件是一个未定义的变量,我很确定问题是IE9不支持文件属性。

正如你在这里看到的,IE10是必需的。

所以试试这个:

var file; 
try{
   file = document.getElementById('files').files[0];
}catch(error){
   file= null;
}

PS:我为我糟糕的英语道歉

var file = document.getElementById('files').files[0] || "undefined";