我创建了一个带有一些标记的谷歌地图(来自 wordpress 帖子),但是当我在控制台上运行“gulp”时出现此错误:“不要在循环内创建函数。”
我创建了一个 jsfiddle为了复制我的本地主机情况,任何人都可以帮助我解决这个问题吗?
我知道如果我写“//jshintignore:line”gulp创建脚本,但我认为这个问题可能是我在chrome上遇到的另一个错误的问题:(
var infowindow = new google.maps.InfoWindow();
var gmarkers = [];
function initialize() {
map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: new google.maps.LatLng(51.508293, -0.127701),
mapTypeControl: false,
panControl: false,
zoomControlOptions: {
position: google.maps.ControlPosition.RIGHT_CENTER
},
mapTypeId: google.maps.MapTypeId.ROADMAP
});
for (var i = 0; i < locations.length; i++) {
var marker = new google.maps.Marker({
position: locations[i].latlng,
icon: locations[i].marker,
map: map,
animation: google.maps.Animation.DROP,
optimized : false
});
gmarkers.push(marker);
google.maps.event.addListener(marker, 'click',
(function(marker, i) {
return function() {
map.panTo(marker.getPosition());
//method 2
var target = jQuery("#item" + i);
jQuery(target).show().siblings("div").hide();
if (!jQuery('#all-posts').hasClass('active')){
jQuery("#all-posts").toggleClass("active");
jQuery("#close-btn").toggleClass("active");
}
// stop yt video
//jQuery("#stop-yt-video").trigger("click");
};
})(marker, i)
);
}
}
initialize();
最佳答案
取出您的 IIFE 函数,将其移出循环并为其命名,例如 makeHandler
(但不调用它)。
function makeHandler(marker, i) {
return function() {
map.panTo(marker.getPosition());
//method 2
var target = jQuery("#item" + i);
jQuery(target).show().siblings("div").hide();
if (!jQuery('#all-posts').hasClass('active')){
jQuery("#all-posts").toggleClass("active");
jQuery("#close-btn").toggleClass("active");
}
// stop yt video
//jQuery("#stop-yt-video").trigger("click");
};
}
然后在循环中执行以下操作:
for (var i = 0; i < locations.length; i++) {
var marker = new google.maps.Marker({
position: locations[i].latlng,
icon: locations[i].marker,
map: map,
animation: google.maps.Animation.DROP,
optimized : false
});
gmarkers.push(marker);
google.maps.event.addListener(marker, 'click', makeHandler(marker, i));
}
关于javascript - jshint - 不要在循环内创建函数 - 谷歌地图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31172520/