无法't访问函数中的对象

Couldn't access object in function

本文关键字:函数 对象 访问 无法      更新时间:2023-09-26

for循环中,i是我的循环计数器。

console.log($(f_images[i].DOM));
$(f_images[i].DOM).hover(function() {
    console.log($(f_images[i].DOM));
}, function() {});

控制台显示:

[object Object]
"Uncaught TypeError: Cannot read property 'DOM' of undefined". 

如果我用与f_images相关的任何东西替换$(f_images[i].DOM),也会发生同样的事情。

为什么我不能在悬停函数中访问对象数组本身?

您基本上有这个问题:循环中的JavaScript闭包——一个简单的实际示例

运行悬停函数时,i是结束循环的最后一个值,也是第一个超出范围的索引。

如该答案所述,在循环中使用闭包来关闭i,它应该如您所期望的那样工作。

for (var i = 0; i < f_images.length; i++) {
  (function(i) {
    $(f_images[i].DOM).hover(function(){
      console.log($(f_images[i].DOM));
    }, function(){
    });
  }(i));
}

替换

$(f_images[i].DOM)

带有:

$('f_images' + [i] + '.DOM')