Javascript lastIndexOf在Internet Explorer中不起作用
我有以下代码:Javascript lastIndexOf在Internet Explorer中不起作用,javascript,Javascript,我有以下代码: var currentServerlist = []; var newServerIp = document.getElementById('add_server').value; if( CurrentServerIP != newServerIp ) { $('#failoverServers td.row_selector').each(function() {
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;
}
但我发现lastIndexOf在InternetExplorer中不起作用(它在Chrome中起作用)
如何修复此问题?根据,除IE8及以下版本外,所有浏览器都支持,Array.prototype.lastIndexOf
如果您需要支持此类浏览器,可以使用可用的各种浏览器之一(或a)。某些浏览器(IE)不支持很多JavaScript属性。我通常会在mdn上找到解决方案:
那里的代码是:
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;
};
}
似乎只有在IE9/10中才能实现。您需要使用垫片来支撑它。请参阅:,特别是第行。根据W3School,lastIndexOf由IE支持:@sdespont,这不是w3schools第一次出错