在javascript中切换案例

时间:2013-06-12 07:17:05

标签: javascript switch-statement

我有这个代码在 result.locationList [x] .location 行中返回,我想操作它们:

                    for (x=0; x<result.locationList.length; x++) {
                        locationListHTML += '<div class="groupLocation">';
                        if (result.locationList[x].availability) {
                            locationListHTML += '<span class="availableLoc">
                                + result.locationList[x].location + '</span> ';
                        } else {
                            locationListHTML += '<span class="checkedoutLoc">'  
                                + result.locationList[x].location + '</span> ';
                        }

为实现这一目标,我创建了一个开关,但它不起作用:

                    for (x=0; x<result.locationList.length; x++) {
                        locationListHTML += '<div class="groupLocation">';
                        if (result.locationList[x].availability) {
                        switch (result.locationList[x].availability)
                              {
                              case "123-ABC: Hamburg":
                                location="Hamburg";
                                break;
                              case "123-ABC: Berlin":
                                location="Berlin";
                                break;
                              case "123-ABC: Munich":
                                location="Munich";
                                break;
                              case "123-ABC: Dusseldorf":
                                location="Dusseldorf";
                                break;
                              case "123-ABC: Dresden":
                                location="Dresden";
                                break;
                              } 
                            locationListHTML += '<span class="availableLoc">
                                + result.locationList[x].location + '</span> ';
                        } else {
                            locationListHTML += '<span class="checkedoutLoc">'  
                                + result.locationList[x].location + '</span> ';
                        }

由于我对Javascript不是很熟悉,所以我要感谢提示从哪里开始调试?

基督教

2 个答案:

答案 0 :(得分:4)

不要使用复杂的开关,最好只是获取字符串中已存在的信息。

那就是你应该使用

location = result.locationList[x].availability.split(':').pop().trim();

最好的原因是,如果可能的案例数量增加,您将不必维护列表,并且您不会冒险在此列表中出错。顺便说一句,更短的代码更容易管理(当它可读时)。

注意:

  • 如果您希望您的字符串可能不符合您提供的模型,则必须根据您的应用程序处理错误。例如,如果result.locationList[x].availability.split(':')的长度不是2,您可能希望发出错误消息。

  • 我认为已经声明了location变量,这就是我没有放var的原因。如果不是,请添加它:您可以从未明确声明的变量中获得许多错误。

虽然错误处理 依赖于您期望的字符串以及您希望如何做出反应,但这里是您如何组织它们(这里使用正则表达式但是相同):

var m = result.locationList[x].availability.match(/[^\:]*:\s?(.*)/);
if (m.length==2) {
     var location = m[1];
     // use location
} else {
     // the input string isn't good, maybe it's empty or
     //  it doesn't contain the : char. Alert the user or the police
     //  or use a default value instead
}

答案 1 :(得分:1)

Visual Studio中的Java脚本代码是一种调试它的简单方法。您必须在Js文件上编写代码并将其添加到Project。例如,在js文件中编写代码,例如“blub.js”。您必须参考它来自它使用的页面。或者将文件拖放到页面以便于使用。您可以使用选择result.locationList [x] .location code.you使用QuickWatch Tool查看当前值。