我有一个城市列表,当我点击链接时,我想要运行一些特定的JavaScript。 JS在这里: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])
});
}
但是,我收到错误“undefined'不是一个对象”。请问有人可以解释问题所在吗?
答案 0 :(得分: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.length
值将为click
。
此外,您在2d数组中缺少逗号。
答案 1 :(得分:2)
var cities = [
["new-york", 45, 90, 15], // <-- that comma was missing
["london", 20, 30, 15]
];
注意你忘了在数组中分开的逗号:)