Javascript 是否在不从div中删除元素的情况下更新溢出?

Javascript 是否在不从div中删除元素的情况下更新溢出?,javascript,html,css,Javascript,Html,Css,如果我使用: parentNode.removeChild( divHere ); 它确实起作用,溢出的滚动条也相应地更新。如果我使用JS来“divHere.style.visibly=”隐藏“好吧,这已经不起作用了。我所做的就是在一个容器div中创建115个div,用户可以选择过滤器来只显示他们想要的图像,所有div都有一个背景图像,基本上只是一个带有名称的图像 所以我有两个问题: 1) 有没有办法更新溢出并使其不考虑隐藏元素 2) 如果1)比我使用removeChild从容器中删除一个di

如果我使用:

parentNode.removeChild( divHere );
它确实起作用,溢出的滚动条也相应地更新。如果我使用JS来“divHere.style.visibly=”隐藏“好吧,这已经不起作用了。我所做的就是在一个容器div中创建115个div,用户可以选择过滤器来只显示他们想要的图像,所有div都有一个背景图像,基本上只是一个带有名称的图像

所以我有两个问题:

1) 有没有办法更新溢出并使其不考虑隐藏元素

2) 如果1)比我使用removeChild从容器中删除一个div更不可能,它确实会消失,但它到底发生了什么?它是否因为没有添加到页面上的任何元素而从页面上消失?所以它基本上是隐藏的?我不必担心人们在一些不太常用的浏览器中看到一些完全奇怪的图片

如果你有更好的方法,我们将不胜感激

提前感谢您的帮助

方法删除指定元素的指定子节点,并将删除的节点作为节点对象返回,如果节点不存在,则返回null。 该null表示元素现在已从标记中删除

您应该使用它来避免浏览器将其考虑在内,因为浏览器在标记中找不到该元素

您也可以这样做:

$(document).remove(object_to_remove);

了解更多信息:

我想我可能会对你问题的第三部分有所回应。包含div中的大量div和过滤的使用使我认为您可能需要研究使用DataTables插件for jQuery()。它有一些非常好的功能,用于排序/过滤等。它包含大量的数据元素,并支持多种数据源。如果基本功能对你来说还不够的话,还有一些插件


如果你想用它来做更复杂的事情,有一个学习曲线,如果你没有太多使用jQuery的话,可能很难习惯(虽然由于没有做太多的web开发,我没有使用过jQuery,但我可以说,只要有机会,我都非常喜欢使用它,尽管这可能只是因为我喜欢学习如何在编程中做新的事情),但我觉得如果你愿意花时间在它上面,你将拥有比现在更易于维护的东西。

为什么不使用
display:none
来代替
visibility:hidden
?哇,这是一个很棒的答案。感谢你找到了一个更好/更简单的解决方案。现在的问题是,我想什么时候把它们放回去t我也要设置显示吗?默认设置是什么?非常感谢您的回答=)div的默认设置是block,所以只需将它们放回
display:block
即可再次显示。在所有浏览器中都应该可以正常工作。@HateNames查看我的答案非常感谢你的回答,感谢Peter提供的简单解决方案。不过我还有一个问题。我在读关于回流的书,以及它是慢DOM脚本的主要问题。由于更改显示或可见性会访问样式并导致回流,您知道从div中删除它们然后稍后重新添加它们是否是更好的解决方案吗?即使有更多的编码参与,它不会导致回流,并提供更高的性能?有什么想法吗?不幸的是,我不喜欢使用jQuery,但您的解释仍然有效。我知道语法的大部分功能,只是担心如果没有父项,它会出现在一些随机的地方+1感谢您花时间回答BTW为什么不使用jQuery?你不被允许吗?不,不是这样,这是我自己的项目。当本机代码使用起来同样简单时,我看不到使用库的目的。也许对于更复杂的事情jQuery是值得的,但是对于像这样的小任务,我看不出有什么意义哦!所以我的答案不是你想要的?@HateNames我不认为与115个div一起工作是一项小任务。15,也许吧,但不是115。如何将它们添加到您的页面?手动,还是有一个脚本可以迭代某些内容并将div添加到页面的DOM中?非常感谢您花时间编写本文。我肯定会研究它,因为以后我可能会有300-400个项目要过滤,所以肯定会有一些我感兴趣的东西。谢谢你的信息