这个jQuery for循环中的循环有什么问题?

时间:2015-02-13 12:58:03

标签: jquery loops

第一个“for循环”中的两个“for循环”工作正常,但问题出现在我将它们包装在第一个循环中时。

有人能看出他们有什么问题吗?

jQuery('#rooms').change(function () {

    for (var a = 1; a > 40; a++;) {
        if (jQuery("#rooms").val() == a) {
            var val = a;
            for (var i = 1; i > val; i++) {
                var room = '#room' + i;
                jQuery(room).show();
            }
            for (var i = val + 1; i < 40; i++) {
                var room = '#room' + i;
                jQuery(room).hide();
                jQuery('#r' + i + 'adult, #r' + i + 'child, #room' + i + ' .room-type, #room' + i + ' .room-board, #sr' + i + 'ch1, #sr' + i + 'ch2, #sr' + i + 'ch3, #sr' + i + 'ch4').prop('selectedIndex', 0);
            }
        }
    }

});

**谢谢,所以代码的问题是最后的分号和条件。

我想要实现的是简化此代码。

现在这对我来说非常适合:

                if (jQuery("#rooms").val() == 1) {
                    var val = 1;
                    for ( var i = 1; i < val + 1; i++) {var room = '#room' + i; jQuery(room).show(); }   
                    for ( var i = val + 1; i < 40; i++) {var room = '#room' + i; jQuery(room).hide(); jQuery('#r'+i+'adult, #r'+i+'child, #room'+i+' .room-type, #room'+i+' .room-board, #sr'+i+'ch1, #sr'+i+'ch2, #sr'+i+'ch3, #sr'+i+'ch4').prop('selectedIndex',0); }
            }
            if (jQuery("#rooms").val() == 2) {
                    var val = 2;
                    for ( var i = 1; i < val + 1; i++) {var room = '#room' + i; jQuery(room).show(); }   
                    for ( var i = val + 1; i < 40; i++) {var room = '#room' + i; jQuery(room).hide(); jQuery('#r'+i+'adult, #r'+i+'child, #room'+i+' .room-type, #room'+i+' .room-board, #sr'+i+'ch1, #sr'+i+'ch2, #sr'+i+'ch3, #sr'+i+'ch4').prop('selectedIndex',0); }
            }
            if (jQuery("#rooms").val() == 3) {
                    var val = 3;
                    for ( var i = 1; i < val + 1; i++) {var room = '#room' + i; jQuery(room).show(); }   
                    for ( var i = val + 1; i < 40; i++) {var room = '#room' + i; jQuery(room).hide(); jQuery('#r'+i+'adult, #r'+i+'child, #room'+i+' .room-type, #room'+i+' .room-board, #sr'+i+'ch1, #sr'+i+'ch2, #sr'+i+'ch3, #sr'+i+'ch4').prop('selectedIndex',0); }
            }

但是我想创建一个“for循环”,所以在达到“val()== 40”

之前我不必重复这些行。

**对不起,我只想多思考一下。这是解决方案:

    for ( var x = 1; x < 40; x++) {
            if (jQuery("#rooms").val() == x) {
                    var val = x;
                    for ( var i = 1; i < val + 1; i++) {var room = '#room' + i; jQuery(room).show(); }   
                    for ( var i = val + 1; i < 40; i++) {var room = '#room' + i; jQuery(room).hide(); jQuery('#r'+i+'adult, #r'+i+'child, #room'+i+' .room-type, #room'+i+' .room-board, #sr'+i+'ch1, #sr'+i+'ch2, #sr'+i+'ch3, #sr'+i+'ch4').prop('selectedIndex',0); }
            }
            }   

非常感谢!

2 个答案:

答案 0 :(得分:5)

a永远不能大于40并且同时等于1所以不会执行

您在for循环中放置的代码如下:

for (var a = 1; a > 40; a++;) {

有很多问题:

  • 禁止使用最后一个分号。
  • 因为a永远不会大于40且等于1同时循环被破坏

您的意思是a < 40吗?

这会导致类似这样的事情:

for (var a = 1; a < 40; a++) {

答案 1 :(得分:0)

你打算做这样的事吗?我已经将外部循环和第一个内循环中的“大于”更改为“小于”,以使此代码工作并用“5”替换外部计数器。

for (var a = 1; a < 5; a++){
           console.log("Outer Loop a=",a);

                    var val = a;
                    for ( var i = 1; i < val; i++) {
                        console.log("Inner Loop 1 i=",i);
                    }   
                    for ( var i = val + 1; i < 5; i++) {
                        console.log("Inner Loop 2 i=",i);                        
                    }

            }