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 中。只需删除两个逗号:

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

也许您的代码可以通过这种方式处理空值:

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 回答
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 回答