您好我在IE中遇到此错误。它适用于所有其他浏览器。
这是错误显示的行:
if (parseFloat(totalnumm.replace(/[^0-9-.]/g,'')) > compare_value_neww && values[x].indexOf("Custom") > -1 ).
我用Google搜索并找到了一个解决方案:
<meta http-equiv="X-UA-Compatible" content="IE=8;FF=3;OtherUA=4" />
但它对我不起作用。
答案 0 :(得分:7)
我打算问你正在测试这个版本的IE,但是因为你在meta标签中指定了content="IE=8
,这是相当无关紧要的。
简短的回答是,IE8或更早版本不支持.indexOf
数组。 (其中包括兼容模式下的IE版本,因此您的元标记将意味着它不适用于任何IE版本)
解决方案:
使用类似jQuery(或类似)的库,它提供了一种.inArray()
方法,您可以使用它。
然后,您需要将代码从使用var.indexOf(x)
更改为$.inArray(var,x)
如果您已经在使用jQuery(或具有此功能的其他库),请选择此解决方案。
使用像this one这样的polyfill库,将标准.indexOf
方法添加到Array原型中。
这应该允许您保持现有代码不变;只包括图书馆。
如果您乐意使用图书馆,但尚未安装可能有帮助的图书馆,请使用此解决方案。
使用for()
循环编写自己的功能,执行相同的工作。
这是您在数组中查找内容的完全变化,但这意味着您不需要使用任何额外的库。
如果您不想(或不能以任何理由)使用第三方库,请使用此解决方案。
删除您的IE8元标记(无论如何都非常糟糕,所以这是一个好主意)并且仅为IE9或更高版本的用户支持您的网站。
如果您愿意停止支持旧的IE版本,请使用此解决方案。
事实上,无论如何都要这样做是个好主意;没有充分的理由使用元标记强制IE进入兼容模式。最好将其设置为content="IE=edge"
。这将完全消除新IE版本的问题。如果您确实需要支持IE8或更早版本,那么此解决方案将无法解决问题,您还需要使用上述其他解决方案之一,但无论如何我仍然建议您这样做,因为事实上你是故意从新的IE版本中删除功能。