这个 jQuery for 循环内的循环有什么问题?
What is wrong with this jQuery for loops inside a loop?
第一个 "for loop" 中的两个 "for loops" 工作正常,但是当我将它们包装在第一个循环中时问题就来了。
谁能看出他们出了什么问题?
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 loop",所以在到达 "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); }
}
}
非常感谢!
a
永远不能同时大于 40
和等于 1
所以不会执行
您放入 for 循环的代码如下:
for (var a = 1; a > 40; a++;) {
存在一些问题:
- 禁止使用最后一个分号。
- 因为
a
永远不可能大于40
同时等于1
循环被打破
你是说 a < 40
吗?
这会导致这样的结果:
for (var a = 1; a < 40; a++) {
你打算做这样的事情吗。我已将外循环和第一个内循环中的 "greater than" 更改为 "less than" 以使此代码正常工作,并将外部计数器替换为“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);
}
}
第一个 "for loop" 中的两个 "for loops" 工作正常,但是当我将它们包装在第一个循环中时问题就来了。
谁能看出他们出了什么问题?
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 loop",所以在到达 "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); }
}
}
非常感谢!
a
永远不能同时大于 40
和等于 1
所以不会执行
您放入 for 循环的代码如下:
for (var a = 1; a > 40; a++;) {
存在一些问题:
- 禁止使用最后一个分号。
- 因为
a
永远不可能大于40
同时等于1
循环被打破
你是说 a < 40
吗?
这会导致这样的结果:
for (var a = 1; a < 40; a++) {
你打算做这样的事情吗。我已将外循环和第一个内循环中的 "greater than" 更改为 "less than" 以使此代码正常工作,并将外部计数器替换为“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);
}
}