使用javascript中的for循环和if语句

Issue with for loop and if statements in javascript

本文关键字:if 语句 循环 for javascript 中的 使用      更新时间:2023-09-26

我使用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.

捕获变量中的颜色,例如:color,并在函数末尾返回:

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;
}

通过循环遍历对象的每个属性,然后返回,您实际上得到了最后一个可能匹配的"MT"或"IRU"(如果有的话)。如果你一找到匹配项就退出函数,那么你就会得到第一个可能匹配的"MT"或"IRU"。

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

不要使用return,使用后会立即停止。

尽管我不知道gidS,但还是试试这个。

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