字符串变量实例的问题
problem with instance of string var
我正在做一个循环,在每次迭代中,我都会设置一个名为content的字符串var,这个var我用来创建一些谷歌地图标记的infoWindows。但是,在每次更改var值而不是创建新实例的迭代中,这会修改值,并始终将标记的infoWindows设置为var的最后一个值content
,这就是为什么我做错了。
for (var i = 0; i < info.length; i++) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(info[i].split(',')[5],
info[i].split(',')[6]),
optimized: false,
map: map,
zoom: 6,
draggable: true,
animation: google.maps.Animation.DROP
});
var content = '<p>Central: ' + info[i].split(',')[1] + '</p>';
var infoWindow = new google.maps.InfoWindow({
content: content
});
google.maps.event.addListener(marker, 'click', function () {
infoWindow.open(map, this);
currentMarker = this;
});
}
google.maps.event.addListener(marker, 'click', function () {
infoWindow.open(map, this);
currentMarker = this;
});
正在创建一个闭包,并且infoWindow
指向外部函数变量,所以所有处理程序都打开相同的infoWindow
。javascript中只有函数作用域(没有一个for、if等(。使用闭包来实现您想要的:
google.maps.event.addListener(marker, 'click', (function(infoW){
return function () {
infoW.open(map, this);
currentMarker = this;
};
})(infoWindow));
这确实很奇怪。
您是否尝试使内容构建内联?
var infoWindow = new google.maps.InfoWindow({
content: '<p>Central: ' + info[i].split(',')[1] + '</p>'
});
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 将PHP变量传递给jQuery时遇到问题
- ES6构造函数返回基类的实例
- 谷歌地图重叠MarkerSpiderfier实例化问题
- 使用ng repeat添加多个视图实例时的范围界定问题
- Unity 2d实例化鼠标位置问题,请告知
- 在 JavaScript 中修饰实例方法时出现问题
- 在 Unity 5.3 中向新实例化的游戏对象添加强制时出现问题
- 在EmberJS中创建模型实例的问题
- 在FF和IE中存在多个jPlayer实例的问题
- 初始化问题和jquery实例的使用
- 谷歌图表可视化实例化问题仪表板
- 在一个页面上使用多个jQuery UI控件实例有问题.手风琴控件的多种用途
- 访问实例方法时出现的JavaScript OO问题
- 无法获取具有相同参数的多个实例的问题列表
- Node.js express-session + redis单实例问题
- 作用域问题:Angular指令的多个实例具有隔离作用域
- JavaScript闭包问题:为什么第二次调用outerFn会创建一个新的outerVar实例?
- JavaScript闭包问题:为什么第二次调用outerFn会创建一个新的outerVar实例?
- 字符串变量实例的问题