我用PHP工作了很多,现在我正在慢慢学习javascript。我正在为一些谷歌地图标记设置zIndex。我正在使用for循环。我希望变量" i"包含一个我可以用来设置zIndex的数字,但如果我这样做,它会破坏代码并且标记不会显示在地图上。如果我使用数字,代码可以工作。如果我将一个数字输入变量并使用该变量,代码也可以工作。所以我可以做到这一点,但我想理解为什么使用i
变量不起作用。
当我将i
输出到div中时 - 它显示数字1,2,3,4,5,6,7 ...
for (var i in data.results) {
var myLatlng = new google.maps.LatLng(data.results[i].latitude,data.results[i].longitude);
markers[i] = new StyledMarker({styleIcon:new StyledIcon(StyledIconTypes.BUBBLE,
{
color:"bbbbbb",
text:data.results[i].id
}),
position:myLatlng,
zIndex: 1,
map:map
});
google.maps.event.addListener(markers[i], 'mouseover', function ()
{
this.setOptions({zIndex:100});
});
google.maps.event.addListener(markers[i], 'mouseout', function ()
{
this.setOptions({zIndex:1});
});
}
答案 0 :(得分:1)
希望这是您正在寻找的解释类型:
使用for-in
循环时,您将获得对象的键[就像其他答案所说]。这些键与常规for
循环的整数索引之间的区别在于对象键始终为string
类型。
如果你运行这个简单的循环:
var test = {
1: 'a',
2: 'b',
3: 'c'
}
for (var i in test) {
console.log(typeof i, i);
}
您将获得以下输出:
string 1
string 2
string 3
由于您不熟悉编程,您可能知道需要一个整数来用于数组的索引,这是我假设的data.results
的数据类型。
如果您需要,可以使用Fiddle。
希望这有用!
答案 1 :(得分:0)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in
您正在data.results
中循环浏览属性。
答案 2 :(得分:0)
for循环将遍历data.results的键。如果您希望将i用作索引,则应使用常规for循环,如下所示:
for (var i = 0; i < data.results.length; i++) {
// some code using data.results[i];
}