2017-02-01 8 views
1

次のスクリプトは、三項演算子使用して、配列に格納されたデータに応じてjQueryを使って別のダイアログボックスを作成し、いくつかの理由から2つのJavaScript条件

$div.html(data).dialog({ 
    dialogClass: array[current][5] == 4 ? 
        "green" : 
        array[current][5] == 3 ? 
         "green" : 
         array[current][5] == 0 ? 
          "red" : 
          "orange", 
    width:"750px", 
    title: array[current][5] == 4 ? 
       "Ok" : 
       array[current][5] == 3 ? 
        "Ok" : 
        array[current][5] == 0 ? 
         "Bad" : 
         "Average", 
    position: {my: "center top", 
       at: "center top", 
       of: "#doc-frame"}, 
    buttons: { 
     'Previous': function() { 
      if (current == 0) { 
       return; 
      } 
      else { 
       current--; 
      } 

      $(this).dialog("close").remove(); 
      createDialog(array[current][0], current); 
     }, 
     'Next': function() { 
      if (current == (array.length - 1)) { 
       return; 
      } 
      else { 
       current++; 
      } 

      $(this).dialog("close").remove(); 
      createDialog(array[current][0], current); 
     } 
    } 
}); 

をタイトルの変更は機能しません。しかし、私はdialogClassラインをコメントアウトすると動作します(私はダイアログボックスのスタイル/フォーマットを変更しません)。なぜ誰もが(dialogClassとタイトル)両方の条件が一緒に働かないと、両方の時間を同時に動作させる正しい構文は何かを知っていますか?ありがとう。

+1

私たちは、これらの変数が参照するもの見当がつかない。 [mcve]デモを作成する – charlietfl

答えて

1

三項構成の代わりにオブジェクトを使用できます。

var values = { 
    4: { color: 'green', title: 'Ok' }, 
    3: { color: 'green', title: 'Ok' }, 
    0: { color: 'red', title: 'Bad' }, 
    default: { color: 'orange', title: 'Average' } 
}; 

使い方

dialogClass: (values[array[current][5]] || values.default).color, 
title:  (values[array[current][5]] || values.default).title,