2013-08-01 143 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

当我改变最后一个其他如果,然后所有的数据是相同的 –