对于性能更好,在页面上有许多隐藏元素,或创建它们并根据需要使用javascript来销毁它们。例如,单击某些内容时,首先会创建该元素,然后显示该元素。当它关闭时,它会被销毁。这会比隐藏在页面中的隐藏元素更好吗?
答案 0 :(得分:5)
我认为这部分取决于元素的复杂程度,部分取决于“性能”的含义。元素越复杂,创建它的代码就越多,创建的时间就越长。因此,将元素隐藏在页面中可能会使显示更快,但代价是更大的页面(以及更多的DOM筛选),这可能会使整体速度降低。
答案 1 :(得分:3)
您通常会获得最佳的点击性能,只显示/隐藏元素,但这是以较大的初始页面加载为代价的。如果你正在使用jQuery,你也可以使用detach()从DOM图中删除一个元素而不会破坏它,所以你可以在别处重新附加它,这比destroy / create便宜。
一般来说,按性能顺序从最佳到最差:
如果您需要动态生成复杂内容,您可以查看一个Javascript模板工具,如handlebars.js - 它可以让您定义模板,然后从这些模板创建标记+一些传入您的对象然后可以通过innerHTML进行分配。它提供了一种非常快速且非常有效的方式来管理动态客户端内容。
答案 2 :(得分:1)
创建和销毁DOM元素是您在JavaScript中可以做的最慢的操作,尤其是在IE中。拥有许多隐藏元素将占用更多内存,最初可能需要更长时间才能加载,但可以将其视为缓存:您将缓存这些元素供以后使用,并在需要时重新使用它们,而不是创建它们并在飞行中摧毁它们。
但是,如果你不是在大规模(数百/数千个元素)上这样做,那可能无关紧要。创建或销毁单个DOM元素所需的时间可以忽略不计,因此如果是这种情况,请为您做更多的事情。
答案 3 :(得分:1)
恕我直言,你应该做另一种考虑,因为显然页面加载速度受其大小的影响,以kb为单位。
如何计算网页尺寸?
最大尺寸是多少?
所以,你的问题是没有正确的dom元素数量,你在隐藏元素数量之前有很多事情要做! ;)希望这个帮助
参考:
工具的