如果声明似乎不正确javascript

时间:2013-08-01 09:27:28

标签: javascript asp.net if-statement

我的if语句elseelse if存在问题。

这是我的代码:

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)

2 个答案:

答案 0 :(得分:3)

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

          }

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

if else if else 具有相同的条件。更正。

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

答案 1 :(得分:1)

您的主要问题(忽略另一个已经突出显示的答案重复)是在代码的末尾:

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

在本节中,您实际上并没有if;因此,JavaScript解析器将其视为:

       else true;

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

其中(d == 3)的评估结果为true,然后是一个单独的代码块,它会独立于Yaxis阻止if ... else块更新switch的值。

更简洁的方法是使用switch (d) { case 1: Yaxis = 'data'; break; case 2: Yaxis = 'data1'; break; ... etc .. } 语句:

var

请注意,'c','e'等的值在{}括号内定义为{{1}},因此它们的值在外部不可用那些。