如何将选择值传递给另一个函数并根据传递的值从Json获取数据?

时间:2013-03-21 11:00:06

标签: javascript jquery html json option

我正在编写html和javascript代码以从Json文件中获取一些数据。 我的HTML代码:

 <div class="section">
    <div class="sectionTitle">
      <h3>Configuration</h3>
    </div>
     <select name="selectDistribution" class="span12" onchange="callDist("value");"  

 onfocus="this.selectedIndex = -1;">
      <option >Choose from distributions.</option>
      <option value="1">Uniform</option>
      <option value="2">Normal</option>
      <option value="3">Exponential</option>
      <option value="4">Geometric</option>
</select>
    <div id="parameters"></div>
    <div id="distributionParams"> </div>
    <button class="btn btn-large btn-block btn-primary" type="button">Send</button>
  </div>

当用户选择一个分布时,参数必须显示在选择下方。 例如,当用户选择统一分布时,必须在下面附加最小值和最大值,并且我想在文本框中显示第一个最小值标签及其值,并且对于最大值,过程是相同的。

我的callDist()函数 函数callDist(类型)   {

$.getJSON('Dist.json', function(type){
    var $container = $('#parameters').empty();

    $.each(type.distributions, function(i, distributions) {
      if(type==1){

          $.each(distributions.type, function(key, value) {
          $container.append(key + ': ' + value + '<br />');
      }
      //And so on...

    });

    $container.append('<hr />');
  }
  );

 });


 }

我的Dist.Json文件如下:

 {
 "distributions":[
  {

     "name":"Uniform",
     "type":"1",
     "parameters":[{ "minValue":"2" , "maxValue":"4" }], 
  },
  {  "name":"Normal",
     "type":"2",
     "parameters":[{ "mean":"5" , "standartDeviation":"3" }],
  },
  {
     "name":"Exponential",
     "type":"3",
     "parameters":[{"lamda":"2"}],
  },
  {
     "name":"Geometric",
     "type":"4",
     "parameters":[{"probability":0.2}],
  }
]
}

如何在用户选择其中一个分布后显示参数,并在动态创建的标签和文本框中显示参数。 感谢。

1 个答案:

答案 0 :(得分:0)

试试这段代码......

function callDist(value)
    {
    $.getJSON('Dist.json', function(type){
        for(i in type.distributions)
         {
            if(type.distributions[i].name==value)
             {
               for( j in type.distributions[i].parameters)
                {  
                   for( k in type.distributions[i].parameters[j])
                   {
                   var val1=distributions[i].parameters[j][k];
                   var val2=distributions[i].parameters[j][k];
                    }

                }

             }


         }



    });
    }