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

Javascript破坏Internet Explorer中属性的空值-我如何让IE忽略这一点?,javascript,null,internet-explorer-9,Javascript,Null,Internet Explorer 9,Internet explorer正在为以下代码生成此错误: SCRIPT5007:无法获取属性“0”的值:对象为null或未定义 用于“document.getElementById('files').files[0]” 文件[0]为空是正确的,但我不在乎,我怎么能告诉IE不在乎呢 谢谢试试 var file; if (document.getElementById('files').files){ file = document.getElementById('files').fil

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

SCRIPT5007:无法获取属性“0”的值:对象为null或未定义
用于“document.getElementById('files').files[0]

文件[0]为空是正确的,但我不在乎,我怎么能告诉IE不在乎呢

谢谢

试试

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

如果文件未定义,这将短路并返回
未定义
,否则将返回第一个文件

澄清一下,错误表明
文件
是未定义的变量,访问属性
0
会导致错误。如果它是
files[0]
本身,则表达式将返回
undefined

var file = document.getElementById('files').files[0] || "undefined";
如果文件未定义,这将短路并返回
未定义
,否则将返回第一个文件


澄清一下,错误表明
文件
是未定义的变量,访问属性
0
会导致错误。如果它是
文件[0]
本身,表达式将返回
未定义的

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

var file = document.getElementById('files').files[0] || "undefined";
正如Dennis所说,错误表明files是一个未定义的变量,我很确定问题在于IE9不支持files属性

正如你所见,IE10是必需的

所以试试这个:

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

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

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

正如Dennis所说,错误表明files是一个未定义的变量,我很确定问题在于IE9不支持files属性

正如你所见,IE10是必需的

所以试试这个:

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

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

你确定不是
document.getElementById('files')。files
为空吗?这似乎就是错误所暗示的。@DarkFalcon是的,我不敢相信我没有想到这一点。谢谢大家的回答您确定不是
document.getElementById('files')。files
为空吗?这似乎就是错误所暗示的。@DarkFalcon是的,我不敢相信我没有想到这一点。谢谢大家的回答,这将失败,因为
文件
是未定义的对象。检查长度的问题与0相同。这将失败,因为
文件
是未定义的对象。检查长度将出现与0相同的问题。