以下的函数在 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!');
}
}
for...in
循环来遍历数组,它只应该用于枚举。 - Nick Craverfor..in
遍历数组只会引起问题,这不仅是一种约定,而且是一种错误的用法。 数组中的顺序和键都没有被完全指定,它们是依赖于具体实现的......例如,IE将按添加的顺序枚举数组项,而不是按其索引。 但是,您可以通过访问索引来正确地迭代。 - Nick Craver