Javascript JS如果在for循环的内部

Javascript JS如果在for循环的内部,javascript,jquery,Javascript,Jquery,我试图将其重写为for循环;我下面的尝试失败了。有什么想法吗 jQuery.event.add(window, "load", resizeFrame); jQuery.event.add(window, "resize", resizeFrame); function resizeFrame() if ($(window).width() < 232){ $("#grid-content").css( 'width', '232px' ); }else i

我试图将其重写为for循环;我下面的尝试失败了。有什么想法吗

jQuery.event.add(window, "load", resizeFrame);
jQuery.event.add(window, "resize", resizeFrame);
function resizeFrame()
    if ($(window).width() < 232){
        $("#grid-content").css( 'width', '232px' );
    }else if ($(window).width() < 458){
        $("#grid-content").css( 'width', '232px' );
    }else if ($(window).width() < 684){
        $("#grid-content").css( 'width', '458px' );
    }else if ($(window).width() < 910){
        $("#grid-content").css( 'width', '684px' );
    }else if ($(window).width() < 1136){
        $("#grid-content").css( 'width', '910px' );
    };
};
jQuery.event.add(窗口,“加载”,调整框架大小);
添加(窗口,“调整大小”,调整框架大小);
函数resizeFrame()
如果($(窗口).width()<232){
$(“#网格内容”).css('width','232px');
}else if($(窗口).width()<458){
$(“#网格内容”).css('width','232px');
}else if($(窗口).width()<684){
$(“#网格内容”).css('width','458px');
}else if($(窗口).width()<910){
$(“#网格内容”).css('width','684px');
}else if($(窗口).width()<1136){
$(“#网格内容”).css('width','910px');
};
};
结果是,不管窗口大小如何,div(#网格内容)都在3000px左右

jQuery.event.add(window, "load", resizeFrame);
jQuery.event.add(window, "resize", resizeFrame);
function resizeFrame()
    for (var x=232;x<=3000;x=x+226){
        if ($(window).width() < x ){
            $("#grid-content").css( 'width', x +'px' );
        };
    };
};
jQuery.event.add(窗口,“加载”,调整框架大小);
添加(窗口,“调整大小”,调整框架大小);
函数resizeFrame()

对于(var x=232;x,您需要在第一次匹配时退出循环,这样直到最后才会继续,如下所示:

jQuery.event.add(window, "load", resizeFrame);
jQuery.event.add(window, "resize", resizeFrame);
function resizeFrame() {
    for (x=232;x<=3000;x=x+226){
        if ($(window).width() < x ){
            $("#grid-content").css( 'width', x +'px' );
            break; //add this
        }
    }
}
jQuery(window).bind("load resize", function () {
    var w = $(window).width();
    for (var x=232;x<=3000;x+=226) {
        if (w < x ) {
            $("#grid-content").width(x);
            break;
        }
    }
});
jQuery.event.add(窗口,“加载”,调整框架大小);
添加(窗口,“调整大小”,调整框架大小);
函数resizeFrame(){

对于(x=232;x,您需要在第一次匹配时退出循环,这样直到最后才会继续,如下所示:

jQuery.event.add(window, "load", resizeFrame);
jQuery.event.add(window, "resize", resizeFrame);
function resizeFrame() {
    for (x=232;x<=3000;x=x+226){
        if ($(window).width() < x ){
            $("#grid-content").css( 'width', x +'px' );
            break; //add this
        }
    }
}
jQuery(window).bind("load resize", function () {
    var w = $(window).width();
    for (var x=232;x<=3000;x+=226) {
        if (w < x ) {
            $("#grid-content").width(x);
            break;
        }
    }
});
jQuery.event.add(窗口,“加载”,调整框架大小);
添加(窗口,“调整大小”,调整框架大小);
函数resizeFrame(){

对于(x=232;x,您不需要一个循环来取整到离散的步骤,这是一个简单的算法

function resizeFrame() {
    var w= $(window).width();
    w-= (w-6) % 226;
    if (w<232) w= 232;
    $('#grid-content').width(w);
}
函数resizeFrame(){
var w=$(window.width();
w-=(w-6)%226;

如果(w您不需要一个循环来取整到离散的步骤,那么这是一个简单的算法

function resizeFrame() {
    var w= $(window).width();
    w-= (w-6) % 226;
    if (w<232) w= 232;
    $('#grid-content').width(w);
}
函数resizeFrame(){
var w=$(window.width();
w-=(w-6)%226;

如果(wIs)是
函数resizeFrame()
中缺少的
{
在您的问题中有输入错误?请使用
var
在for循环中声明
x
,否则它将成为全局变量。是
函数resizeFrame()中缺少的
{
问题中的输入错误?使用
var
在for循环中声明
x
,否则它将成为一个全局变量。是我,还是OP的
if()
语句的预期结果似乎与
for()的预期结果不同步
loop?@patrick:哦,说得好,我没有发现!if
中的向下取整行为似乎比向上取整更有用。将答案改为向下取整而不是向上取整。(也放弃了
3000
检查,因为我的猜测是这样的,
if
案例中的1136限制仅仅是任意的上限。)谢谢。如果你有时间,你能解释一下吗?
n-=n%chunk
是一种习惯用法,可以将
chunk
四舍五入到最接近的倍数。它使用
%
运算符除以
chunk
并取余数;从原始值中减去余数,则保留四舍五入倍数。(需要使用
-6
来对齐块,使它们位于
6232,
而不是
0226,
)是我,还是OP的
if()
语句的预期结果似乎与
for()的预期结果不同步
loop?@patrick:哦,说得好,我没有发现!if
中的向下取整行为似乎比向上取整更有用。将答案改为向下取整而不是向上取整。(也放弃了
3000
检查,因为我的猜测是这样的,
if
案例中的1136限制仅仅是任意的上限。)谢谢。如果你有时间,你能解释一下吗?
n-=n%chunk
是一种习惯用法,可以将
chunk
四舍五入到最接近的倍数。它使用
%
运算符除以
chunk
并取余数;从原始值中减去余数,则保留四舍五入倍数。(需要
-6
来对齐块,使它们位于
6232,
而不是
0226,
)+1当@bobince显示了一个更简单的解决方案时,您正确地指出了他的for循环失败的原因。+1当@bobince显示了一个更简单的解决方案时,您正确地指出了他的for循环失败的原因。