-2

都市のリストがあり、リンクをクリックしたときに、特定の Javascript を実行したいと考えています。JSfiddle はこちら: http://jsfiddle.net/uWYRW/5/

var cities = [
    ["new-york", 45, 90, 15]
    ["london", 20, 30, 15]
];

for (i = 0, length = cities.length; i < length; i++) {
    $("#"+cities[i][0]).click(function (e) {
        e.preventDefault();
        console.log(cities[i][0])
    });
}

ただし、次のエラーが表示されます。

「未定義」はオブジェクトではありません。

誰かが問題がどこにあるのか説明できますか?

4

2 に答える 2

2

IIFE (即時呼び出し関数式) を試してください。

for (i = 0, length = cities.length; i < length; i++) {
    (function(i) {
        $("#"+cities[i][0]).click(function (e) {
            e.preventDefault();
            console.log(cities[i][0])
        });
    })(i);
}

これは、ループが完了すると、すべてのリスナーの値がiになるためです。cities.lengthclick

また、2次元配列にカンマがありません。

于 2013-08-31T15:48:35.963 に答える
2
var cities = [
    ["new-york", 45, 90, 15], // <-- that comma was missing
    ["london", 20, 30, 15]
];

配列で区切るのを忘れたコンマに注意してください:)

于 2013-08-31T15:49:42.290 に答える