我有这个代码在 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不是很熟悉,所以我要感谢提示从哪里开始调试?
基督教
答案 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查看当前值。