首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SCRIPT5007:无法获取属性“”indexOf“”的值:对象为空或未在IE中定义

SCRIPT5007:无法获取属性“”indexOf“”的值:对象为空或未在IE中定义
EN

Stack Overflow用户
提问于 2013-05-28 16:52:38
回答 1查看 13.2K关注 0票数 0

嗨,我在IE中遇到了这个错误。它可以在所有其他浏览器中工作。

这是显示错误的行:

代码语言:javascript
运行
复制
if (parseFloat(totalnumm.replace(/[^0-9-.]/g,'')) > compare_value_neww    &&  values[x].indexOf("Custom") > -1 ).

我用谷歌搜索了一下,找到了一个解决方案:

代码语言:javascript
运行
复制
<meta http-equiv="X-UA-Compatible" content="IE=8;FF=3;OtherUA=4" />

但它对我不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-28 16:58:12

我本想问你是在哪个版本的IE中测试的,但既然你在元标签中指定了content="IE=8,那就无关紧要了。

简而言之,IE8或更早版本不支持数组的.indexOf。(这包括兼容模式下的最新IE版本,因此您的meta标签将意味着它在任何IE版本中都不起作用)

解决方案:

  1. Use一个像jQuery (或类似的)这样的库,它提供了一个您可以使用的 .inArray() 方法。

然后,您需要将代码从使用var.indexOf(x)更改为使用$.inArray(var,x)

如果您已经在使用jQuery (或具有此feature).

  • Use的另一个库),则选择此解决方案。polyfill库,如 ,它将标准的 .indexOf 方法添加到数组原型。

这应该允许您保持现有代码不变;只需包含库即可。

如果你很乐意使用一个库,但是你还没有安装一个可以使用 for() 循环来执行相同工作的函数,那么可以使用这个解决方案。

这完全改变了您在数组中查找内容的方式,但这并不意味着您不需要使用任何额外的库。

如果你不想(或者因为某种原因不能)使用第三方library.

  • Remove你的IE8元标签(这很糟糕,所以这是个好主意),并且只支持使用IE9或更好版本的用户,那么可以使用这个解决方案。

如果您乐于停止支持较旧的IE版本,请使用此解决方案。

事实上,不管怎样,这样做都是一个好主意;没有充分的理由使用meta标签来强制IE进入兼容模式。最好将其设置为content="IE=edge"。对于较新的IE版本,这将完全消除该问题。如果你确实需要支持IE8或更早的版本,那么这个解决方案不会解决问题,你还需要使用上面的其他解决方案之一,但我仍然建议你这样做,因为目前的情况是,你在没有充分理由的情况下故意从较新的IE版本中删除功能。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16787799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档