Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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 删除元素时自动滚动_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 删除元素时自动滚动

Javascript 删除元素时自动滚动,javascript,jquery,html,css,Javascript,Jquery,Html,Css,每当从DOM中删除一个元素时,它下面的所有元素都会向上移动以占据新释放的位置。是否有必要对其进行更改,以便如果某个元素聚焦在已移除元素下方,则其上方的所有元素都将向下移动(即向下滚动),且聚焦元素的位置将保持不变 请参阅此代码 <div id="foo"> <br><br> </div> <textarea id="bar" onkeypress="removeFoo()"></textarea> 这是你的电话号

每当从DOM中删除一个元素时,它下面的所有元素都会向上移动以占据新释放的位置。是否有必要对其进行更改,以便如果某个元素聚焦在已移除元素下方,则其上方的所有元素都将向下移动(即向下滚动),且聚焦元素的位置将保持不变

请参阅此代码

<div id="foo">
  <br><br>
</div>
<textarea id="bar" onkeypress="removeFoo()"></textarea>



这是你的电话号码。每当您在文本区域中键入字符时,它会突然移动,以占用通过删除div获得的可用空间。我希望防止这种行为,因为它看起来很奇怪


编辑:目标是使删除无缝。如果该聚焦元素是可视区域中的最后一个元素,则它肯定会向上移动,但如果它位于屏幕中间,则其上方的元素应向下移动,以便聚焦元素不会移动

必须使用CSS滚动

如下图所示:

<style>
#foo{overflow-x:scroll;
OR
overflow-y:scroll;
}
</style>

#foo{overflow-x:滚动;
或
溢出y:滚动;
}

在窗口向上移动以占用空闲空间后,将其滚动到“聚焦元素”的顶部如何

function () {
      $("#id-of-elem-to-remove").slideUp();

      var focused = $("#id-of-focused-elem");
      $("html, body").animate({
        scrollTop: focused.offset().top
      }, 1000);
    });
编辑


看看这个。尝试删除“6”或“7”。

您需要获取当前滚动位置和可移动元素的高度,然后在删除元素后,将滚动位置设置为当前滚动位置减去元素高度:

function removeFoo() {
  var tempScrollTop = $(window).scrollTop();
  var ele = document.getElementById("foo");
  var height = ele.offsetHeight;
  console.log(tempScrollTop, height);
  ele.parentElement.removeChild(ele);
  $(window).scrollTop(tempScrollTop - height);
}


顺便说一句,我添加jquery是为了让它对我来说更快,但你明白了。此外,您的脚本在第二次尝试删除元素时无法工作,因为元素不再存在(未尝试修复它)

您必须删除吗?您不能改用hide()函数吗?不,我想从DOM中删除元素。所以您想删除元素,但仍保留此删除元素占用的视口空间?这看起来像是奇怪的行为imho@A.Wolff我不想在视口中保留空间。如果可能的话,我希望聚焦元素的位置不会改变。我想这可能会帮助你,这也会导致元素的移动,这也是我最终想要避免的。那么你到底想要什么呢?将焦点元素保持在原处,并将下一个元素移到焦点元素的顶部?顺便说一句,你所说的“聚焦”元素是什么意思?我读了你的编辑。向下移动顶部元素会将空白区域移动到文档顶部。你到底想在这里实现什么?