-3

解決できない次の JavaScript の問題について、助けが必要です。私は初心者であり、論文の研究を完了することができるように、良い解決策を見つけるために最善を尽くしています. このコードは、Qualtrics と呼ばれるオンライン調査プログラム内で実行するように設計されています。各 var は、質問の回答から抽出されたデータを表します。これらをテストしましたが、正常に動作します。

スイッチの 1 つは、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;
 }
}
4

2 に答える 2

0

ここで大げさな推測をして、変数の1つが実際には整数ではなく文字列値を持っていると信じています。置き換えてみてください:

switch(storeLow) {

...

switch(storeHigh) {

switch( parseInt(storeLow, 10) ) {

...

switch( parseInt(storeHigh, 10) ) {
于 2011-09-29T09:38:01.220 に答える
0

より良いアプローチは、非常に多くのスイッチケースで醜いコードを使用する代わりに、javascript オブジェクトを使用して Cash 範囲を割り当てることです。

例えば。

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
}
于 2011-09-29T09:23:34.510 に答える