这是我的代码:
var textArray = ['#text1', '#text2', '#text3', '#text4',
'#text5', '#text6', '#text7', '#text8']
$('#capture').click(function() {
for (var i in textArray) {
console.log($(i).offset());
}
});
不确定为什么我在控制台中未定义。我觉得我错过了很简单的事情。
答案 0 :(得分:11)
JavaScript中的for…in
循环遍历对象的键,而不是其值。您可以使用Array.prototype.forEach
给予支持; $.each
也可以作为后备,因为你正在使用jQuery。
var textArray = ['#text1', '#text2', '#text3', '#text4',
'#text5', '#text6', '#text7', '#text8'];
$('#capture').click(function() {
textArray.forEach(function (x) {
console.log($(x).offset());
});
});
答案 1 :(得分:0)
由于i
是数组中项目的索引,因此您需要使用textArray[i]
来访问当前项目(如果您已记录i
的值,则会显示0, 1,2 ... 7)。
for (var i in textArray) {
console.log($(textArray[i]).offset());
}
答案 2 :(得分:0)
你可能想要像这样索引数组:
var textArray = ['#text1', '#text2', '#text3', '#text4',
'#text5', '#text6', '#text7', '#text8']
$('#capture').click(function() {
for (var i in textArray) {
console.log($(textArray[i]).offset());
}
});
答案 3 :(得分:0)
您不应使用for..in
循环遍历数组。这意味着循环对象{}
使用以下
$('#capture').click(function() {
$.each(textArray, function(value) {
console.log($(value).offset());
})
});
您可以使用Array#forEach
,但IE8不支持forEach
,因此我使用jQuery的each
进行了此操作。