for in循环 - 变量中包含的内容--javascript

时间:2014-03-12 02:40:26

标签: javascript google-maps variables

我用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});
    });
}

3 个答案:

答案 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)

答案 2 :(得分:0)

for循环将遍历data.results的键。如果您希望将i用作索引,则应使用常规for循环,如下所示:

for (var i = 0; i < data.results.length; i++) {
  // some code using data.results[i];
}