1

こんにちは、IE8 互換モード用にページをデバッグしていますが、このスクリプトはうまく動作せず、クラッシュします。

基本的に、3D 配列を反復処理し、ローカル パスを変数に追加する必要がありました。他の方法でもできますが、 * * が機能しない理由が気になります...

どんな提案も大歓迎です:)コードは次のとおりです。

for(i=0;i<menu_items_p.length;i++)
for(j=0;j<menu_items_p[i].length;j++)
menu_items_p[i][j][1]='http://127.0.0.1/'+menu_items_p[i][j][1];

配列は次のようになります。

var menu_items_p =
[
    [   //Products
        ['Health Care', 'products/health.php'],
        ['Aroma Therapy','products/scents.php'],
    ],
            [      // Empty
             ],
    [   //Test
        ['What ever', 'spirulina/about.php'],
    ]
]

ただし、問題は、値が空の場合があり、array.length によってエラーが発生することです...

4

3 に答える 3

3

元の配列宣言を使用した場合:

var menu_items_p =
[
    [   //Products
        ['Health Care', 'products/health.php'],
        ['Aroma Therapy','products/scents.php'],
    ],
            [      // Empty
             ],
    [   //Test
        ['What ever', 'spirulina/about.php'],
    ]
]

エラーは IE8 で発生しますが、IE9 では発生しません。2 つのコンマを削除するだけです。

var menu_items_p =
[
    [   //Products
        ['Health Care', 'products/health.php'],
        ['Aroma Therapy','products/scents.php'] // here comma removed
    ],
            [      // Empty
             ],
    [   //Test
        ['What ever', 'spirulina/about.php'] // here comma removed
    ]
]

すべてが正常に動作する必要があります。

于 2012-05-07T11:20:25.267 に答える
0

YoshiとThiefMasterが提案したように、私はそれを次のようにしました。これが解決したものです:

for(var i=0;i<menu_items_p.length;i++)
if (menu_items_p[i] !== undefined)
for(var j=0;j<menu_items_p[i].length;j++)
if (menu_items_p[i][j] !== undefined)
menu_items_p[i][j][1]='http://127.0.0.1/'+menu_items_p[i][j][1];
  1. グローバル変数が置き換えられました。
  2. 未定義をチェックします。

彼らが正式な方法で答えなかったのは残念なので、私は自分で答えなければなりません:) 皆さんありがとう!

于 2012-05-13T18:55:06.267 に答える
0

たぶん、あなたのコードは空の値を次のように処理できます:

for(var i = 0; i < menu_items_p.length; i++) {
    // we skip the value if it is empty or an empty array 
    if(!menu_items_p[i] || !menu_items_p[i].length) continue; 
    for(var j = 0; j < menu_items_p[i].length; j++) {
       // again, we skip the value if it is empty or an empty array
       if(!menu_items_p[i][j] || !menu_items_p[i][j].length) continue;
       menu_items_p[i][j][1] = 'http://127.0.0.1/' + menu_items_p[i][j][1];
    }
}
于 2012-05-07T11:20:43.873 に答える