lastIndexOf does not work in Internet Explorer

匿名 (未验证) 提交于 2019-12-03 08:57:35

问题:

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?

回答1:

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).



回答2:

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;   }; } 


回答3:

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.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!