2012-12-05 13 views
10

私はInternet Explorerでいくつかのjをデバッグしようとしていましたが、これを理解することはできません。IEの問題 - Object.keys(値).lengthはサポートされていません

var numberOfColumns = Object.keys(value).length; 

、エラーが、私はとにかく私のために(奇妙なことがObject.keys(value).length;財産とは何かを持っていたと思ったが、最初に...

Message: Object doesn't support this property or method 
Line: 640 
Char: 5 
Code: 0 
URI: xxx 

である:ここでエラーの原因となっているラインです)、エラーはchar 5にあり、これは変数名の先頭です。

とにかく、何が起こっているのか、それを修正する方法がわかりません。私は交換した場合も、:

var numberOfColumns = 9; // troubleshooting 

...と

var numberOfColumns = Object.keys(value).length; 

をエラーが解消されません。助けてください。

更新

jsFiddleは

http://jsfiddle.net/4Rab7/

+0

Firebugやその他のデバッグツールで実行しようとしましたか? – AMember

+0

あなたはもっと多くのコード、おそらく問題のあるjsfiddleを表示できますか? – AMember

+0

故障していると思われるコードを、障害のないコードで置き換えてもそれでも問題が解決しない場合、問題は何か問題です。 –

答えて

19

keysプロパティはIE> = 9でサポートされています。これは以前のバージョンでテストされている可能性があります。簡単な回避策は次のとおりです。ここで

var length = 0; 
for(var prop in data){ 
    if(data.hasOwnProperty(prop)) 
     length++; 
} 

はデモンストレーションです:http://jsfiddle.net/vKr8a/

は、より多くの情報のため、この互換性の表を参照してください。また

http://kangax.github.com/es5-compat-table/

+0

素晴らしいですが、私は解決策を考え出しましたが、あなたのものは私のものよりもずっと簡単です(そしてより良い):http://jsfiddle.net/xDfBZ/。私は間違いなくあなたと一緒に行く – veryConfused

+0

http://jsfiddle.net/t8EfF/1/ – noob

+0

これは 'prop'グローバル変数を汚染します –

4

Object.keysを追加するECMAScript第5版で導入されました。 IEのバージョンが9より低い場合は、サポートされません。

12

、あなたはそのブラウザを推奨ポリフィルを使用することができますネイティブにサポートしていないObject.keys

+0

クリーンでシンプルで効果的です。 – Piyush

関連する問題