小编典典

为什么 indexOf 在数组 IE8 上不起作用?

all

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

阅读 79

收藏
2022-04-24

共1个答案

小编典典

IE9 之前的 IE 版本没有.indexOf()Array
的功能,要定义确切的规范版本,请在尝试使用之前运行它:

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;
  };
}

这是来自 MDN的版本,用于
Firefox/SpiderMonkey。在其他情况下,例如
IE,它会.indexOf()在它丢失的情况下添加......此时基本上是
IE8 或以下。

2022-04-24