Safari Array indexOf无法找到任何内容

时间:2012-08-23 16:04:44

标签: javascript safari

当我在Safari 6.0中评估以下javascript时:

Array.indexOf([1,2,3],3)

它返回-1,基本上说3不在数组中!

但在Firefox中它正确返回2.

我知道Array.indexOf是一个相对较新的函数,所以我有代码测试它是否存在,如果没有定义它。但是看起来这个功能内置于Safari。

这是一个错误,还是我做错了什么?

编辑:这实际上是问题的简化版本。我实际上在做的是尝试在TR中找到TD单元的索引:

var tr = td.parentNode
var col = Array.indexOf(tr.cells,td)

tr.cells没有indexOf。但是,使用Array.indexOf我可以这样对待它,至少在Firefox中是这样。在Safari中,这不起作用。

我想在这种情况下我实际上可以使用cellindex,但如果没有定义,我将如何获取索引?

1 个答案:

答案 0 :(得分:7)

我想知道为什么你不按预期使用它:

[1,2,3].indexOf( 3 );

除非是学术问题。在这种情况下,它实际上是一个 bug 特殊的Firefox实现。如果您想直接使用Array.prototype版本,您应该像

一样
Array.prototype.indexOf.call([1,2,3], 3);