Javascript 将$(document.scrollLeft()作为变量发出

Javascript 将$(document.scrollLeft()作为变量发出,javascript,jquery,Javascript,Jquery,我试图用左变量替换代码中的'1493'。当它是一个数字时,它可以正常工作,但当我将它改为使用“left”时,if语句停止工作 $(document).scroll(function () { var width = $(document).width(); var left = $(document).scrollLeft(); var postCount = $(".post").length; var colu

我试图用左变量替换代码中的'1493'。当它是一个数字时,它可以正常工作,但当我将它改为使用“left”时,if语句停止工作

$(document).scroll(function () { 
        var width = $(document).width();
        var left = $(document).scrollLeft();    

        var postCount = $(".post").length;  

        var columnLength = ( width - ((postCount*743) - 1493)) - (width-(postCount*743));

        if(left >= columnLength) {
            $(".num").text(left);
        } 


     });

有人知道我在这件事上哪里出了问题吗?任何指点都很好

您可能需要强制它为整数:

var left = parseInt($(document).scrollLeft()); 

让我们看一看你的数学题

var columnLength = ( width - ((postCount*743) - 1493)) - (width-(postCount*743));
你基本上是在抵消宽度和后计数*743。它留给你的是-1493,它是正的1493。以下内容将具有相同的效果:

var columnLength = 1493;
因此,当您输入静态值1493时,if语句激发的原因是columnLength始终等于1493,这当然满足以下条件:

if (1493 >= columnLength)
你可以很容易地写:

if (1493 >= 1493)
也就是说,从理论上讲,当left大于或等于1493时,它仍然应该开火。但左边是以像素为单位的当前水平滚动位置。如果达到1493的滚动位置,这将是一个非常宽的页面

编辑:这里有一把小提琴,让你了解滚动位置增加的速度:

编辑2:

以下是对您评论的回应

据我所知,你试图得到一个水平滚动条,基本上,永远滚动

请参见以下小提琴演示:

代码如下:

$(document).scroll(function () { 
    var width = $(document).width();
    var left = $(document).scrollLeft();
    var viewportwidth = window.innerWidth;

    // If our scrollbar gets to the end, 
    // add 50 more pixels. This could be set
    // to anything.
    if((left + viewportwidth) === width) {
        $("body").css("width", width + 50);
    } 
 });
根据代码中的注释,如果确定已到达终点,我们只需增加主体的宽度。scrollLeft只会告诉我们当前在可视区域左侧不可见的像素数。所以,我们需要知道我们有多少可视区域,有多少隐藏在左边,才能知道我们是否一直滚动到最后

如果在内部元素(如div)上有滚动条,则需要使用div的宽度而不是主体进行更新

注意:您可能还需要使用$window而不是$document来让scrollLeft跨所有浏览器工作


注意:请参见此处关于使用innerWidth的内容。存在一些兼容性问题,您可能需要对其进行一些扩展以处理IE6的其他情况。

您所说的停止工作是什么意思?你能发布一个演示吗?或者不记得了,scrollLeft是否有单位“px”?提醒left的值以验证预期值。@Matt Ball我的意思是,当1493是固定的,而不是带有减法的VAR时,总是显示左边的数字。事实并非如此:console.log2-“2”;另外,返回一个数字。感谢您的详细介绍。首先,我认为加等号不是最好的主意。左侧变量将在某一点大于columnLength。我试图得到的最终结果是有一个水平的无限卷轴。