user1646528
user1646528

Reputation: 437

lastIndexOf does not work in Internet Explorer

I have the following code:

        var currentServerlist = [];
        var newServerIp = document.getElementById('add_server').value; 
        if( CurrentServerIP != newServerIp )
        {
            $('#failoverServers td.row_selector').each(function() {
            var row = $(this).closest('tr');
            var serverIp = row.find('td[rel=ip]').text();
            currentServerlist.push(serverIp);   
            });

            if(currentServerlist.lastIndexOf(newServerIp) != -1)
            {
                return true;
            }
            return false;
         }

But I find that the lastIndexOf does not work in InternetExplorer (It does in Chrome).

How can I fix this?

Upvotes: 3

Views: 4651

Answers (3)

ZER0
ZER0

Reputation: 25332

lastIndexOf seems only be implemented in IE9/10. You need to use a shim to support it. See: ES5-shim, line 509-535 in particular.

Upvotes: 0

HMR
HMR

Reputation: 39320

Some browsers (IE) don't support a lot of JavaScript properties. I usually find a solution on mdn:

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/lastIndexOf

The code there:

if (!Array.prototype.lastIndexOf)
{
  Array.prototype.lastIndexOf = function(searchElement /*, fromIndex*/)
  {
    "use strict";

    if (this == null)
      throw new TypeError();

    var t = Object(this);
    var len = t.length >>> 0;
    if (len === 0)
      return -1;

    var n = len;
    if (arguments.length > 1)
    {
      n = Number(arguments[1]);
      if (n != n)
        n = 0;
      else if (n != 0 && n != (1 / 0) && n != -(1 / 0))
        n = (n > 0 || -1) * Math.floor(Math.abs(n));
    }

    var k = n >= 0
          ? Math.min(n, len - 1)
          : len - Math.abs(n);

    for (; k >= 0; k--)
    {
      if (k in t && t[k] === searchElement)
        return k;
    }
    return -1;
  };
}

Upvotes: 1

James Allardice
James Allardice

Reputation: 166041

According to the ES5 compatability table, Array.prototype.lastIndexOf is supported in all browsers except IE8 and below.

If you need to support such browsers, you can use one of the various polyfills that are available (or a more complete ES5 polyfill solution).

Upvotes: 7

Related Questions