0

このような質問はたくさんありますが...うーん...うまくいきません。どうすれば...次のようなオブジェクトリテラルを取得できますか:

locations = {};

locations.activities = [
{ text:'biking'},
{ text:'hiking'},
{ text:'boating'},
{ text:'studying'},
{ text:'reading'},
];

アクティビティ配列の値を出力しますか?

IE と Firefox では長さが異なります (それぞれ 6 と 5)。

ありがとう

4

3 に答える 3

4

問題は末尾のコンマです: ブラウザ間の互換性のために削除してください。

一部のブラウザーは、末尾のコンマが存在する場合にリテラルを正しく解析しないため、一貫性のない動作が発生します。正しい動作は、末尾のコンマ2を無視することです。

要素が配列の末尾で省略されている場合 ([...,] など)、その要素は配列の長さに影響しません。


1この構文は IE10 では正しく機能しますが、IE9 以前では正しく機能しません。[1,].lengthこれは、関連するブラウザ モードでコンソールからテストすることで確認できます。報告される値は、それぞれ 1 (正しい) と 2 (正しくない) です。

2末尾のコンマは、[,]が と同等である場合に関連し[undefined]ます。

于 2013-08-30T21:52:18.727 に答える
1

これを試して

locations = {};
locations.activities = [
{ text:'biking'},
{ text:'hiking'},
{ text:'boating'},
{ text:'studying'},
{ text:'reading'},
];


 $.each(locations.activities, function(){
  alert(this.text);
 }); 

jsフィドルはこちらhttp://jsfiddle.net/mhnHx/

于 2013-08-30T21:57:47.270 に答える
1

使用するJSON.stringify(locations.activities);

于 2013-08-30T21:51:20.033 に答える