LastIndexOf not working 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 found that lastIndexOf does not work in InternetExplorer (it works in Chrome).

How can i fix this?

+3
javascript
source share
3 answers

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

If you need to support such browsers, you can use one of the available poly-regiments (or more, the full ES5 polyfill solution ).

+7
source share

Some browsers (IE) do not support many JavaScript properties. Usually I find a solution on mdn:

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

The code is 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; }; } 
+1
source share

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

0
source share

All Articles