当前位置: 首页 > 面试题库 >

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

宫铭
2023-03-14
问题内容

以下功能在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()的功能,以定义确切的规范版本,请在尝试使用它之前运行此功能:

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或以下版本。



 类似资料:
  • 问题内容: 我正在使用Under JS,但li onclick在IE8浏览器上无法使用。 jsfiddle链接: http://jsfiddle.net/sudheera/DUZ3B/14/ HTML JS 请建议 问题答案: IE8和更早版本没有,但是它们确实有其非标准的前身。他们不是 很 一样。 这是一个使用可用功能的“挂钩此事件”功能: 然后,您将在示例中使用它: 请注意,它如何在使用的浏览

  • 问题内容: 我需要添加一个表的2个单元格内容并显示它。下面的JavaScript命令在chrome或IE10中可以正常工作。 但不能在IE8或7中使用 。 结果, N 您能否告诉我 IE7或IE8中 的 等效命令 是什么 , 以读取表的单元格内容并将其转换为float然后添加。 问题答案: IE7 /8不支持textContent。后者具有称为innerText的不同属性,该属性返回DOM节点的文

  • 我有一种字体在IE8和IE9以及所有其他浏览器中都能正常工作,但第二种字体只在IE9和其他浏览器中工作。在IE8中,我得到了一个错误: “CSS3111:@font-face遇到未知错误。” 我一直在四处看书,尝试了很多事情,但都没有运气。 我的代码是: 我试过用几个不同的生成器多次重新生成eot,玩过CSS,玩过头,玩过域,等等,但是看起来它们都很好。如前所述,相同的代码在相同的,只是指向不同的

  • 问题内容: 我已经动态创建了一个复选框。我曾经在单击复选框时调用过一个函数,该函数在Google Chrome和Firefox中有效,但 在Internet Explorer 8中不起作用 。这是我的代码: 是我的事件处理程序。 问题答案: 尝试: 更新: 对于IE9之前的InternetExplorer版本,应使用attachEvent方法将指定的侦听器注册到调用它的EventTarget上,对

  • 问题内容: 我想在chromedp上使用代理,但是代理似乎不起作用,尝试了chromedp.ProxyServer 使用代理后,我得到了公共IPeven。无错误/警告 问题答案: 试试这个:

  • 我试图使用反应组件在我的 在下面的例子中,它在不使用状态的情况下工作得很好 https://jsbin.com/paduyarase/edit?html输出 现在我在我的组件中引入usestate。我编译了下面的函数,使用的是javascript,但它不起作用。 此组件不工作https://jsbin.com/hefiretaru/edit?html输出 获取错误 错误:缩小的反应错误#321;参