如果else语句里面有Javascript嵌套的switch语句

时间:2011-09-29 09:19:05

标签: javascript if-statement switch-statement qualtrics

需要一些无法解决的javascript问题的帮助。我是一个新手并尽力找到一个好的解决方案,这样我就可以完成我的论文研究。该代码旨在在名为Qualtrics的在线调查程序中运行。每个var表示来自问题响应的翻录数据。我测试了这些并且它们工作正常。

其中一个开关在if-else语句之外正常工作。但是,当结合使用时,事情就无法发挥作用。

任何帮助都非常感激。

var storeLow = ${q://QID83/ChoiceGroup/SelectedChoices};
var storeHigh = ${q://QID82/ChoiceGroup/SelectedChoices};
var cash = 0;
if(storeLow >= 1)
{
 switch(storeLow) {
  case 5: 
  cash = 200; 
  break;

  case 3:
  case 6:
  case 11:
  case 12:
  cash = 150;
  break;

  case 1:
  case 2:
  case 4:
  case 7:
  case 8:
  case 9:
  case 10:
  case 13:
  case 14:
  case 15:
  case 16:
  cash = 100;
  break;

  default:
  cash = 50;
  break;
 }
} else {
 switch(storeHigh) {
  case 3:
  cash = 200;
  break;

  case 6:
  case 10:
  case 11:
  case 15:
  cash = 150;
  break;

  case 1:
  case 2:
  case 4:
  case 5:
  case 7:
  case 8:
  case 9:
  case 12:
  case 13:
  case 14:
  case 16:
  cash = 100;
  break;

  default:
  cash = 50;
  break;
 }
}

2 个答案:

答案 0 :(得分:0)

更好的方法是使用javascript对象分配现金范围, 而不是在如此多的开关案例中使用丑陋的代码:

例如

var myCashCriteria = { '15': 100 , '16' : 100, '17' : 100,'5' : 200 }
var myCash = getCash(16);


function getCash(num)
{
   var numKey = num + '';   // convert num to string
   if(myCashCriteria[numKey])
           return myCashCriteria[numKey];
   else
           return 0 ;   // default value
}

答案 1 :(得分:0)

我将在这里做一个疯狂的猜测,并相信可能你的一个变量实际上是携带字符串值而不是整数。尝试替换:

switch(storeLow) {

...

switch(storeHigh) {

switch( parseInt(storeLow, 10) ) {

...

switch( parseInt(storeHigh, 10) ) {