Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $(窗口).resize();不';行不通_Javascript_Jquery - Fatal编程技术网

Javascript $(窗口).resize();不';行不通

Javascript $(窗口).resize();不';行不通,javascript,jquery,Javascript,Jquery,我对window.resize有问题。我的代码js/jquery在这里 var x = $(window).width(); var y = $(window).height(); var z = $('#card').height(); var a = z + 140; // !!!zmienic gdy zmiana marginesu z gory lub paddingu (100 margin + 20x2 padding) var b = 1.78 * y; var c = 1.78

我对window.resize有问题。我的代码js/jquery在这里

var x = $(window).width();
var y = $(window).height();
var z = $('#card').height();
var a = z + 140; // !!!zmienic gdy zmiana marginesu z gory lub paddingu (100 margin + 20x2 padding)
var b = 1.78 * y;
var c = 1.78 * a;
function updateBodySize(){
    x = $(window).width();
    y = $(window).height();
    z = $('#card').height();
    a = z + 140; // !!!zmienic gdy zmiana marginesu z gory lub paddingu (100 margin + 20x2 padding)
    b = 1.78 * y;
    c = 1.78 * a;
    if (c>b) {
        if (x>c) {
            $('body').css({'background-size': x + 'px auto'});
        }
        else {
            $('body').css({'background-size': 'auto ' + c + 'px'});
        }
        $('body').css({'height': a + 'px'});
    }
    else {
        if (x>b) {
            $('body').css({'background-size': x + 'px auto'});
        }
        else {
            $('body').css({'background-size': 'auto ' + b + 'px'});
        }
        $('body').css({'height': y + 'px'});
    }
}
$(document).ready(updateBodySize()); //kiedy zaladowany
$(window).resize(updateBodySize());  //kiedy zmiana rozmiaru
评论是用波兰语写的,但并不重要。我想在每次调整浏览器大小时都运行函数updateBodySize,但现在这个函数只在文档准备就绪时运行(所以我知道该函数工作正常)(最后一行,但只有一行),看起来最后一行被忽略了。这行是否错误
$(窗口).resize(updateBodySize())?还是我的功能出了问题?我在Chrome 33中检查了此代码。

尝试以下操作:

$(function(){updateBodySize();}); //kiedy zaladowany
$(window).resize(function(){updateBodySize();}); 
试试这个:

$(function(){updateBodySize();}); //kiedy zaladowany
$(window).resize(function(){updateBodySize();}); 

我认为您必须使用它,因为您执行函数的方式是,函数的返回值被设置为回调函数,这将不起作用:

$(document).ready(function() {
    updateBodySize();
}); //kiedy zaladowany
$(window).resize(function() {
    updateBodySize();
});  //kiedy zmiana rozmiaru

我认为您必须使用它,因为您执行函数的方式是,函数的返回值被设置为回调函数,这将不起作用:

$(document).ready(function() {
    updateBodySize();
}); //kiedy zaladowany
$(window).resize(function() {
    updateBodySize();
});  //kiedy zmiana rozmiaru
或者你可以试试这个:

window.onresize=updateBodySize

或者您可以尝试以下方法:


window.onresize=updateBodySize

您的最后两行似乎是这里的问题:

$(document).ready( updateBodySize() );
$(window).resize( updateBodySize() );
应该是:

$(document).ready( updateBodySize );
$(window).resize( updateBodySize );
注意从
updateBodySize
中删除
()
——您的目标是将函数
updateBodySize
传递给
。ready
。resize
,而不是传递结果。通过调用函数,您所做的是将
updateBodySize()
的结果传递给
.ready
.resize
函数,实际上:

$(document).ready( null );
$(window).resize( null );
正如您所注意到的,除了
updateBodySize()
第一次(两次)调用它所做的以外,它什么也不做。删除
()
,它将被视为您期望的事件处理程序

PS

除非你用的是第一块

var x = $(window).width();
var y = $(window).height();
var z = $('#card').height();
var a = z + 140;
var b = 1.78 * y;
var c = 1.78 * a;

在函数块之前,您可以删除它,因为您在函数中重新定义了这些变量,所以它将在调用时独立地计算它们。

您的最后两行似乎是这里的问题:

$(document).ready( updateBodySize() );
$(window).resize( updateBodySize() );
应该是:

$(document).ready( updateBodySize );
$(window).resize( updateBodySize );
注意从
updateBodySize
中删除
()
——您的目标是将函数
updateBodySize
传递给
。ready
。resize
,而不是传递结果。通过调用函数,您所做的是将
updateBodySize()
的结果传递给
.ready
.resize
函数,实际上:

$(document).ready( null );
$(window).resize( null );
正如您所注意到的,除了
updateBodySize()
第一次(两次)调用它所做的以外,它什么也不做。删除
()
,它将被视为您期望的事件处理程序

PS

除非你用的是第一块

var x = $(window).width();
var y = $(window).height();
var z = $('#card').height();
var a = z + 140;
var b = 1.78 * y;
var c = 1.78 * a;

在您的函数块之前,您可以删除它,因为您在函数中重新定义了这些变量,所以它将在调用时独立地计算它们。

您是对的,但您也可以执行
$(document).ready(updateBodySize)$(document).ready(updateBodySize)代替。不需要
$(window)
始终有效,即使页面未完全加载,因为在呈现之前定义了
window
。这不是必需的,也是错误的:正如批准的答案中所解释的,传递updateBodySize的结果(通过调用updateBodySize())不会做任何事情。没有必要
$(window)
始终有效,即使页面未完全加载,因为在呈现之前定义了
window
。这不是必需的,也是错误的:正如批准的答案中所解释的,传递updateBodySize的结果(通过调用updateBodySize())不会起任何作用。谢谢,现在一切都正常了:)但我想知道,如果我把结果放到
$(document.ready(),为什么这个函数在页面加载后工作一次,而不是函数本身。加载页面时会发生这种情况(实际上是两次),因为原始代码调用函数两次:一次在
.ready(updateBodySize())
中,一次在
中。调整大小(updateBodySize())
。这些函数中的每一个都首先运行函数,然后将函数的结果传递给方法。谢谢,现在一切都正常了:)但是我想知道,如果我将结果放入
$(document.ready(),为什么在页面加载后这个函数会工作一次,而不是函数本身。加载页面时会发生这种情况(实际上是两次),因为原始代码调用函数两次:一次在
.ready(updateBodySize())
中,一次在
中。调整大小(updateBodySize())
。每个函数首先运行函数,然后将函数的结果传递给方法。