Javascript 在向div添加元素后,如何更新scrollHeight?

Javascript 在向div添加元素后,如何更新scrollHeight?,javascript,jquery,dom,Javascript,Jquery,Dom,我有一个div,其中包含几个图像,溢出隐藏,并缓慢向下滚动。我想,当滚动到底部时,克隆第一个元素并将其附加到底部,这样它将继续滚动 到目前为止,我已经完成了所有这些,只是它没有保持滚动,因为scrollHeight属性仍然是原始值。有没有办法更新div的scrollHeight值 到目前为止,我的剧本是: $(document).ready(function() { $("#carousel").scrollTop(0); intervalID = setInterval("scrollCaro

我有一个div,其中包含几个图像,溢出隐藏,并缓慢向下滚动。我想,当滚动到底部时,克隆第一个元素并将其附加到底部,这样它将继续滚动

到目前为止,我已经完成了所有这些,只是它没有保持滚动,因为scrollHeight属性仍然是原始值。有没有办法更新div的scrollHeight值

到目前为止,我的剧本是:

$(document).ready(function() {
$("#carousel").scrollTop(0);
intervalID = setInterval("scrollCarousel()",50);

carousel = document.getElementById("carousel");
});

function scrollCarousel() {


if ( $("#carousel").scrollTop() > $("#carousel:first").height() ||
        $("#carousel").scrollTop() + carousel.offsetHeight >
        carousel.scrollHeight ) {

    elem = $("#carousel").children(':first-child').clone();
    console.debug(elem);
    elem.appendTo($("#carousel"));
    carousel.scrollHeight += elem.height;
}
else {
    $("#carousel").scrollTop( $("#carousel").scrollTop() + 1 );
}
}

这只是一个想法,如果你能把第一个孩子静态地放在旋转木马的末端,你就可以避免克隆,从而避免问题

希望这有帮助。 问候。

给你:

您犯了一些错误:

首先,不应该在setInterval中放入字符串。特别是当您只是调用一个函数时。由于字符串由eval解析,因此它们的速度非常慢

其次,当您将元素附加到底部时,您希望从顶部移除该元素,然后只需相应地调整滚动位置


另外,当您已经拥有DOM元素时,$(“#carousel”)比$(carousel)慢得多。

好的想法是,每当它滚动到底部时,它会将更多的东西固定到末端,因此它会无限滚动。谢谢提示!不幸的是,当它到达scrollHeight的底部时,它开始将第一个子对象移动到末尾,但由于滚动位置相同,它只是继续这样做而不滚动。啊,我只是忘记了在移动图像后将scrollTop设置为0。问题解决了@Zack Michener如果你感兴趣的话,我会在没有jQuery的情况下重新制作它。原版在这里:不需要jQuery的新版本在这里:出于正确性原因,应该主要避免setInterval中的字符串;表现是次要的。求值字符串是一种糟糕的做法,因为解释器在代码到达执行点之前无法对代码进行静态分析,这就消除了它的许多优点。