Javascript 在DOM操作后防止页面滚动

Javascript 在DOM操作后防止页面滚动,javascript,html,dom,scroll,Javascript,Html,Dom,Scroll,我有一个JavaScript函数,它在页面加载时执行,然后在设置的时间间隔内自动执行。该函数循环使用另一个脚本(由PHP生成)中提供的图像。但是每当这个函数操作DOM时,页面就会滚回到包含我正在编辑的div的div的顶部。我真的很想避免这种情况 我已经看过stackOverflow和其他网站上的其他帖子,但它们都涉及用户的操作,通常是jQuery或Ajax以及带有锚的链接。这些都不适用于这种情况 让您了解我的HTML: <div id="the_rest_of_my_page">

我有一个JavaScript函数,它在页面加载时执行,然后在设置的时间间隔内自动执行。该函数循环使用另一个脚本(由PHP生成)中提供的图像。但是每当这个函数操作DOM时,页面就会滚回到包含我正在编辑的div的div的顶部。我真的很想避免这种情况

我已经看过stackOverflow和其他网站上的其他帖子,但它们都涉及用户的操作,通常是jQuery或Ajax以及带有锚的链接。这些都不适用于这种情况

让您了解我的HTML:

<div id="the_rest_of_my_page">
  <div id="scrolls_to_the top_of_this">
    <div id="img_div">
      This is where my JavaScript is doing stuff
    </div>
  </div>
</div>

这就是我的JavaScript正在做的事情
我的JavaScript代码:

function advance_slideshow( )
{
    document.getElementById( img_div ).innerHTML = '<img src="' + img_array[index] + '">';
    index = (index+1) % img_array.length;
    setTimeout('advance_slideshow()', swap_delay);
}
function advance\u幻灯片放映()
{
getElementById(img_div).innerHTML='';
索引=(索引+1)%img_array.length;
setTimeout('advance_slideshow()',swap_delay);
}
问题相当严重,因为页面每隔这么多秒就会自动向上滚动一次,而页面下方有大量重要内容

有人知道如何防止这种滚动吗


编辑:现在我再试一次,页面在编辑DOM后会滚动到页面顶部,而不是div的顶部。我想这会更有意义,但事实上更糟

我在评论中所说的似乎是你问题的根源:你的
img
的高度没有设置,父div既没有
height
也没有
minheight

那么,会发生什么?当您替换图像时,会有几微秒的时间在div中没有实际图像:旧图像已被丢弃,新图像正在加载

无图像=父div的0高度。整个页面较短,滚动到顶部


可能的解决方案是:在CSS中的div上加一个
minheight
,或者在附加图像时计算图像尺寸并设置
width
height

您能提供一个JSFIDLE或演示页面吗?当然,不能马上提供。但与此同时,你可以看到我的真实想法。它是荷兰语的,但基本概念应该还是一样的,对吗?此外,它正在不断开发中,但现在应该可以使用了。我将尝试获得一个JSFIDLE。重新阅读您的脚本,只是一个快速的预感:尝试设置图像的宽度和高度。