javascript 中的 for 循环和 if 语句问题

Issue with for loop and if statements in javascript

我正在使用 Javascript 和 Openlayers 库来设置地图上矢量要素的样式。 我写了以下脚本:

var gidS = response[Object.keys(response)[Object.keys(response).length - 1]] // get the data from json obj
// ADD STYLING - DIFFERENT COLORS FOR WHAT IS COMPLETE  
var styleContext = {
        getColor: function (feature) {
            var objectKeys = Object.keys(gidS); // use objectkeys to loop over all the object properties //use it to get the length
            for (var i = 0; i < objectKeys.length; i++){
                    //alert(i);

                   //////////////////
                   if(gidS[i][1]=="MT"){
                        //alert(gidS[i][1]);
                        return "green"; 
                    }
                    else if(gidS[i][1]=="IRU"){
                        alert(gidS[i][1]);
                        return "#780000"; //no images on this line
                    }
                    /////////////////////// 
            }
        }
};

如果我 运行 脚本没有 if 条件(在斜杠之间),那么我会根据 gidS 的最大长度得到正确的 i 增量值。 但是当我出于某种原因包含 if 语句时,变量 i 不会增加。它仍然是 0。

已编辑

getColor函数后面是这样执行的

// define Style
                var defaultStyle = new OpenLayers.Style({
                    fillColor: "${getColor}",
                    fillOpacity:"1",
                    strokeColor: "${getColor}",
                    strokeOpacity: "1",
                    strokeWidth: 8,
                    cursor: "pointer",
                    pointRadius: 8

                }, {
                    context: styleContext
                });

我在这里做错了什么? 非常感谢。 D.

不要用return,用完就停

试试这个,虽然我不知道 gidS。

if(gidS[i][1]=="MT"){
   gidS[i]['color']='green';                     
}
else if(gidS[i][1]=="IRU"){
   gidS[i]['color']='#780000';                       
}

在变量中捕获颜色,例如:color,而return它在函数的最后:

getColor: function (feature) {
    var color = '';
    var objectKeys = Object.keys(gidS); // use objectkeys to loop over all the object properties //use it to get the length
    for (var i = 0; i < objectKeys.length; i++){
        if(gidS[i][1]=="MT"){
            color = "green"; 
        }
        else if(gidS[i][1]=="IRU"){
            color = "#780000"; //no images on this line
        }
    }
    return color;
}

通过遍历对象的每个 属性,然后 returning,您实际上得到了最后可能的匹配 "MT" 或 "IRU",如果有的话.如果您 return 在找到匹配项后立即退出函数,那么您将获得第一个可能的匹配项 "MT" 或 "IRU".

例如,给定集合:[[435,'IRU'],[34324,'MT'],[343,'MT']] 我的方法将 return green,而您的方法将 return #780000.