0

我有这段代码在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 不是很熟悉,我会感谢提示从哪里开始调试?

基督教

4

2 回答 2

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
}
于 2013-06-12T07:23:53.820 回答
1

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

于 2013-06-12T07:20:49.717 回答