-1

我的if陈述有问题,else并且else 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并跳过1and 2。因为yaxis它只显示data4,不显示datadata1data2在我的图表上。

显然我的else陈述不正确,但我已经用谷歌搜索了该if陈述,似乎我做得正确,但它不起作用。

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)
4

2 回答 2

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

          }

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

ifelse if有相同的条件。更正它。

               if (d == 1)
               {
               var c = testarray
               Yaxis = 'data';
              var e = testarray1
              Yaxis = 'data1';
              }
              else if(d == 3)
              {
              var e = testarray1
              Yaxis = 'data4';
              }
于 2013-08-01T09:30:03.057 回答
1

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

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

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

       else true;

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

where(d == 3)计算结果为true,然后是一个单独的代码块,该代码块Yaxis独立于if ... else它后面的块更新 的值。

一个更简洁的方法是使用该switch语句:

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

请注意,您的“c”、“e”等值var在括号内定义{}因此它们的值在这些之外将不可用。

于 2013-08-01T09:34:16.027 回答