2

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.indexOfI を使用すると、少なくとも Firefox ではそのように扱うことができます。Safari では、これは機能しません。

この場合、実際には cellindex を使用できると思いますが、それが定義されていない場合、どうすればインデックスを取得できますか?

4

1 に答える 1

7

意図したとおりに使用しない理由が不思議です。

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

学術的な問題でない限り。その場合、それは実際にはバグに特化した Firefox の実装です。Array.prototypeバージョンを直接使用したい場合は、次のようにする必要があります

Array.prototype.indexOf.call([1,2,3], 3);
于 2012-08-23T16:06:39.267 に答える