2013-08-01 182 views
-1

我有我的if陳述,elseelse if問題。如果陳述似乎不正確javascript

這是我的代碼:

function draw(d) { 
    var testarray = JSON.parse(a); 
    var testarray1 = JSON.parse(a1); 
    var testarray2 = JSON.parse(a2); 

    var Yaxis = $("#<%=hidden10.ClientID%>").val(); 

    if (d == 1) 
    { 
     var c = testarray 
     Yaxis = 'data'; 
    } 
    else if (d == 1) 
    { 
     var e = testarray1 
     Yaxis = 'data1'; 
    } 
    else if (d == 2) 
    { 
     var c = testarray 
     Yaxis = 'data2'; 
    } 
    else if (d == 2) 
    { 
     var e = testarray1 
     Yaxis = 'data3'; 
    } 
    else(d == 3) 
    { 
     var e = testarray1 
     Yaxis = 'data4'; 
    } 

當我調試代碼,它只擊中d==1然後進入d==3,並跳過了12。對於yaxis,它只顯示data4,並且在我的圖上沒有顯示datadata1data2

顯然我的else聲明是不正確的,但我有googled the if statement,似乎我做得正確,但它不工作。

d是一個單選按鈕從代碼中調用後面VB:

Select Case RadioButtonList1.SelectedItem.Value 
    Case 1 


     Dim Yaxis As String 
     If RadioButtonList1.SelectedItem.Value = 1 Then 
      Yaxis = "data" 
     End If 


     hidden10.Value = Yaxis 


     For Each row In Year1 
      testarray.Add(row("kWh")) 
     Next row 


     Dim arrayJsonTest1 As String = serializer1.Serialize(testarray) 
     Dim arrayJson11 As String = serializer1.Serialize(testarray1) 


     hidden.Value = arrayJsonTest1 
     hidden1.Value = arrayJson11 
     hidden2.Value = arrayJson12 


     ScriptManager.RegisterStartupScript(Me.Page, Me.GetType, "draw", "javascript:draw(1);", True) 
+0

什麼是在你的代碼? –

+0

d是從vb後面的代碼中調用的單選按鈕。 –

+0

檢查答案..你給錯了條件! –

回答

3
  if (d == 1) 
          { 
       var c = testarray 
       Yaxis = 'data'; 

      } 

      else if (d == 1)//why is this same? 
      { 
       var e = testarray1 
       Yaxis = 'data1'; 
       } 

如果否則,如果具有相同的condition.Correct它。 (忽略了另一個答案已經強調重複的)

   if (d == 1) 
       { 
       var c = testarray 
       Yaxis = 'data'; 
       var e = testarray1 
       Yaxis = 'data1'; 
       } 
       else if(d == 3) 
       { 
       var e = testarray1 
       Yaxis = 'data4'; 
       } 
+0

數據不一樣,我試圖爲第一個單選按鈕調用d == 1。所以當它命中,它顯示不同的數據 –

+0

它將執行條件... –

+0

爲d == 1我希望var c = testarray顯示數據,var e = testarray1顯示data1 .. –

1

你的主要問題是對你的代碼的末尾:

 else (d == 3) 
     { 
      var e = testarray1 
      Yaxis = 'data4'; 
     } 

在本節中,你沒有真正做一個if;作爲結果,JavaScript分析器是治療這種爲:

 else true; 

     { 
      var e = testarray1 
      Yaxis = 'data4'; 
     } 

其中(d == 3)的計算結果爲true,並且隨後是一個單獨的碼塊獨立於if ... else塊它隨後的更新的Yaxis值。

了一個非常巧妙的方法是使用switch語句來代替:

switch (d) { 
    case 1: 
     Yaxis = 'data'; 
     break; 
    case 2: 
     Yaxis = 'data1'; 
     break; 
    ... etc .. 
} 

請注意,您的「C」,「E」等值定義爲var{}括號內,並因此他們的價值將在這些之外不可用。

+0

好吧,發現了!錯過了那一個 –

+0

所以最後一個會如果 –

+0

當我改變最後一個其他如果,然後所有的數據是相同的 –