.indexOf使用JavaScript在IE7/8上运行的数组上的函数

Gga*_*Gga 15 javascript internet-explorer-8 internet-explorer-7

任何人都可以告诉我IE 7和IE 8是否支持JavaScript .indexOf()方法,因为我收到错误:

SCRIPT438: Object doesn't support property or method 'indexOf' 
Run Code Online (Sandbox Code Playgroud)

来自IE9调试控制台(在IE7和IE8浏览器模式下使用).

对于以下注释,使用.indexOf()的代码如下:

if(shirt_colour == 'black') {
    p_arr=['orange','red','green','yellow','bblue','rblue','pink','white','silver','gold'];
    if( p_arr.indexOf(print_colour) != -1 ) rtn = true;
}
Run Code Online (Sandbox Code Playgroud)

mar*_*zzz 36

在IE <9上,indexOf()它没有"很好"地实现.尝试在您的代码上添加此功能:

if (!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt /*, from*/)
  {
    var len = this.length;

    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;
  };
}
Run Code Online (Sandbox Code Playgroud)

如果没有在ECMA-262标准中找到,它将"替换"原始功能.