函数不能单独使用$(document).ready

时间:2014-10-14 17:29:18

标签: javascript jquery html

我尝试使用jquery animate执行自动滚动页面。它非常简单 - 它将xml数据加载到单个DIV,然后使用此大小+一些像素数设置主体大小。我希望它自动滚动到底部。如果我使用此代码:

$(document).ready(function(){
var z=document.getElementById('main_container').clientHeight+2400;
speed=z*3

$('body,html').animate({
    scrollTop: z,
    easing: "linear"}, speed); 
});

它正在发挥作用。但由于我想不止一次使用这个功能,我试过这个:

$(document).ready(pagescroll());

        function pagescroll(){
        var z=document.getElementById('main_container').clientHeight+2400;
        speed=z*3

        $('body,html').animate({
            scrollTop: z,
            easing: "linear"}, speed); 
        });

我完成了。它不会起作用。我尝试将它放在网站的不同部分(头部,正文,$ document.ready和功能本身的更改顺序),但它不会有帮助。我还尝试通过向body元素添加onload来运行此函数。为什么我不能使用它来让这个东西变成vork。

3 个答案:

答案 0 :(得分:0)

您不需要pagescroll(),只需要pagescroll。它应该工作。

$(document).ready(pagescroll);

        function pagescroll(){
        var z=document.getElementById('main_container').clientHeight+2400;
        speed=z*3

        $('body,html').animate({
            scrollTop: z,
            easing: "linear"}, speed); 
        });

答案 1 :(得分:0)

如果将括号放在函数名后面,它会立即调用它,而不是将函数作为参数传递。它应该是:

$(document).ready(pagescroll);

答案 2 :(得分:0)

动画功能的表示法也有错误。你必须这样写:

$(document).ready(pagescroll);

    function pagescroll(){
        var z=document.getElementById('main_container').clientHeight + 2400,
            speed = z * 3;

        // this is one way to write animate():
        $('body,html').animate({scrollTop: z}, speed, "linear");

        // this is another way to write animate(), choose one of it
        $('body,html').animate(
            {scrollTop: z},
            { easing: "linear", duration: speed}
        );
    };

See here how to use animate correctly