为什么indexOf不能在IE8数组上工作?

为什么indexOf不能在IE8数组上工作?

以下功能在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!');
    }}


Qyouu
浏览 536回答 3
3回答

波斯汪

如果你用jQuery为了继续使用indexOf而不必担心兼容性问题,您可以这样做:if (!Array.prototype.indexOf) {     Array.prototype.indexOf = function(val) {         return jQuery.inArray(val, this);     };}如果您想继续使用indexOf但当它不可用时提供一个退路。

慕少森

如果您想使用$.inArray,请小心使用它。我刚刚发现$.inArray只适用于“Array”,而不是字符串。这就是为什么这个函数不能在IE8中工作!jQueryAPI造成混乱$.inArray()方法与JavaScript的本机.indexOf()方法类似,因为它在找不到匹配时返回-1。如果数组中的第一个元素与值匹配,则$.inArray()返回0-他们不应该说“相似”。既然indexOf也支持“String”!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript