以下功能在 Opera、Firefox 和 Chrome 上运行良好。但是,在 IE8 中,它在 if ( allowed.indexOf(ext[1]) == -1)
部分失败。
有人知道为什么吗?有什么明显的错误吗?
function CheckMe() {
var allowed = new Array('docx','xls','xlsx', 'mp3', 'mp4', '3gp', 'sis', 'sisx', 'mp3', 'wav', 'mid', 'amr', 'jpg', 'gif', 'png', 'jpeg', 'txt', 'pdf', 'doc', 'rtf', 'thm', 'rar', 'zip', 'htm', 'html', 'css', 'swf', 'jar', 'nth', 'aac', 'cab', 'wgz');
var fileinput=document.getElementById('f');
var ext = fileinput.value.toLowerCase().split('.');
if ( allowed.indexOf(ext[1]) == -1)
{
document.getElementById('uploadsec').innerHTML = document.getElementById('uploadsec').innerHTML;
alert('This file type is not allowed!');
}
}
最佳答案
IE9 之前的 IE 版本没有 .indexOf()
数组函数,定义the exact spec version ,在尝试使用它之前运行它:
if (!Array.prototype.indexOf)
{
Array.prototype.indexOf = function(elt /*, from*/)
{
var len = this.length >>> 0;
var from = Number(arguments[1]) || 0;
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len;
for (; from < len; from++)
{
if (from in this &&
this[from] === elt)
return from;
}
return -1;
};
}
这是版本 from MDN , 在 Firefox/SpiderMonkey 中使用。在其他情况下,例如 IE,它会添加 .indexOf()
在它丢失的情况下......此时基本上是IE8或以下。
关于javascript - 为什么 indexOf 在数组 IE8 上不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3629183/