我有一个缩略图滚动器,仅在将鼠标悬停在缩略图上3秒钟时才想在其中触发一些操作。我有以下代码,但内部setTimeOut函数未从外部函数获取参数-sourceURL控制台输出出现“ undefined”错误。但是我确实看到了hover函数的正确sourceURL值。
提前致谢!

   var tOut;
   $('img.thumb').hover(function(){
      var sourceURL = $(this).attr('src');
      var lat = $(this).attr('lat');
      var lng = $(this).attr('lng');
      tOut = setTimeout(function(sourceURL,lat,lng){
      console.log(sourceURL);//undefined
      map.setView(new L.LatLng(lat, lng), (init_mapzoom+2));
    },3000);
   },function(){
     clearTimeout(tOut);
  });

最佳答案

您无需将变量传递给函数。由于在存在变量的作用域中创建了函数,因此它们被捕获在函数的闭包中,因此即使作用域消失了,函数也可以使用它们:

var tOut;
$('img.thumb').hover(function(){
  var sourceURL = $(this).attr('src');
  var lat = $(this).attr('lat');
  var lng = $(this).attr('lng');
  tOut = setTimeout(function(){
    console.log(sourceURL);
    map.setView(new L.LatLng(lat, lng), (init_mapzoom+2));
  },3000);
},function(){
  clearTimeout(tOut);
});

关于javascript - Javascript:将参数传递给内部setTimeOut函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26933117/

10-13 06:32