我有一个缩略图滚动器,仅在将鼠标悬停在缩略图上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/