代码如下:var arrayList  = new Array();
arrayList.push('你');
arrayList.push('我');
arrayList.push('他');
arrayList.push('我');
alert(arrayList.lastIndexOf('我'));
以上代码在Mozilla Firefox没有问题,并能正确显示结果为3。
然而在IE8下却报错: "对象不支持此属性或方法"。
请问我要在IE8下达到像火狐一样的运行效果应该怎么改?
IE下支持数组的indexOf()方法为什么不支持lastIndexOf()方法呢? 

解决方案 »

  1.   


    if(!Array.prototype.lastIndexOf){
        Array.prototype.lastIndexOf = function(v){
            for(var i=this.length-1;i>=0;i--){
                if(this[i]==v) return i;
            }
            return -1;
        }
    }
    var arrayList  = new Array();
    arrayList.push('你');
    arrayList.push('我');
    arrayList.push('他');
    arrayList.push('我');
    alert(arrayList.lastIndexOf('我'));
      

  2.   

    改一下:if (!Array.prototype.lastIndexOf)
    {
      Array.prototype.lastIndexOf = function(elt /*, from*/)
      {
        var len = this.length;    var from = Number(arguments[1]);
        if (isNaN(from))
        {
          from = len - 1;
        }
        else
        {
          from = (from < 0)
               ? Math.ceil(from)
               : Math.floor(from);
          if (from < 0)
            from += len;
          else if (from >= len)
            from = len - 1;
        }    for (; from > -1; from--)
        {
          if (from in this &&
              this[from] === elt)
            return from;
        }
        return -1;
      };
    }var arrayList  = new Array();
    arrayList.push('你');
    arrayList.push('我');
    arrayList.push('他');
    arrayList.push('我');
    alert(arrayList.lastIndexOf('我'));