如何减少这个脚本?

时间:2013-01-10 07:03:54

标签: javascript jquery

我想在这个脚本中使用循环,但我不知道该怎么做。

这是我尝试过的:

$('#choice').change(function(){

        if ($('#choice').val()=='')

        {
             $('#topic1').hide();
             $('#topic2').hide();
             $('#topic3').hide();
             $('#topic4').hide();
             $('#topic5').hide();
             $('#topic6').hide();
             $('#topic7').hide();
        }if ($('#choice').val()=='1')
        {
             $('#topic1').show();
             $('#topic2').hide();
             $('#topic3').hide();
             $('#topic4').hide();
             $('#topic5').hide();
             $('#topic6').hide();
             $('#topic7').hide();
        }
        if ($('#choice').val()=='2')
        {
             $('#topic1').show();
             $('#topic2').show();
             $('#topic3').hide();
             $('#topic4').hide();
             $('#topic5').hide();
             $('#topic6').hide();
             $('#topic7').hide();
        }
        if ($('#choice').val()=='3')
        {
             $('#topic1').show();
             $('#topic2').show();
             $('#topic3').show();
             $('#topic4').hide();
             $('#topic5').hide();
             $('#topic6').hide();
             $('#topic7').hide();
        }
        if ($('#choice').val()=='4')
        {
             $('#topic1').show();
             $('#topic2').show();
             $('#topic3').show();
             $('#topic4').show();
             $('#topic5').hide();
             $('#topic6').hide();
             $('#topic7').hide();
        }
        if ($('#choice').val()=='5')
        {
             $('#topic1').show();

             $('#topic2').show();

             $('#topic3').show();

             $('#topic4').show();

             $('#topic5').show();

             $('#topic6').hide();

             $('#topic7').hide();
        }
        if ($('#choice').val()=='6')

        {
             $('#topic1').show();

             $('#topic2').show();

             $('#topic3').show();

             $('#topic4').show();

             $('#topic5').show();

             $('#topic6').show();

             $('#topic7').hide();
        }
          if ($('#choice').val()=='7')
        {
             $('#topic1').show();

             $('#topic2').show();

             $('#topic3').show();

             $('#topic4').show();

             $('#topic5').show();

             $('#topic6').show();

             $('#topic7').show();
        }                        
    });
    $('#choice').change();
    });        

请在这里帮助我。

5 个答案:

答案 0 :(得分:5)

$('#choice').change(function(){
        $('[id^="topic"]').hide();
        var topic = $('#choice').val();
        if (topic!='') {
            $('#topic'+topic).show();
        };
});        
$('#choice').change();

答案 1 :(得分:4)

试试这个

$('#choice').change(function(){
var i;
for(i=1;i<8;i++)
{
  if(i==$(this).val())
  {
       $('#topic'+i).show();
  }
  else
  {
       $('#topic'+i).hide();
  }
}

});

$('#choice').change();

编辑:改进了MrCode的建议。

答案 2 :(得分:1)

jquery可以使用这样的选择器:

$('#choice' + i)

然后,您可以在循环中使用“i”变量

答案 3 :(得分:0)

看起来可以这样做:

$('#choice').on('change', function(){
  for(var i=1;i<8;i+=1)  {
    var showhide = i <= +$(this).val() ? 'show' : 'hide';
    //                  ^convert value to numeric
    $('#topic'+i)[showhide]();
  }
 });

处理程序根据#choice(显示或隐藏)的值确定要使用的方法。对于#topic[i](在循环内)较小的所有i#choice方法的值为show,对于其他#topic[i],方法为{{} 1}}。接下来,使用bracket notation执行确定的方法。

答案 4 :(得分:0)

试试这个:

$('#choice').change(function(){
        for( var i = 0; i<8; i++) {
            if($('#choice').val() <= i) { 
                $('#topic' + i).show();
            } else {
                $('#topic' + i).hide();
            }
        }
    }