【发布时间】:2023-03-17 22:42:01
【问题描述】:
这个项目的 DOM 树很大,必须动态创建节点。有两种方式:
1) 在父元素中插入子元素作为字符串,让浏览器推断子元素,即
html:
<div id="parent"></div>
和javascript:
str='<input type="text" id="child" size="30">';
documen.getElementById("parent").innerHTML=str;
2)让js创建孩子,即
parentElement=document.getElementById('parent');
childElement=document.createElement('input');
childElement.setAttribute('id','child');
parentElement.appendChild('childElement);
我一直在使用 1,当树变大并且应用程序数据变大时,我开始出现非常奇怪的行为。比如,例如
aValue="hi";
str='<input type="text" id="child" size="30" value='+aValue+'>';
documen.getElementById("parent").innerHTML=str;
结果将是一个包含 hi 的文本行输入元素,以及向 DOM 树和应用程序数据中添加的更多元素,并且突然间文本行将读取
+aValue+
并且说在 chrome 调试器下你会看到与所述结果没有因果关系。 我尝试删除以前的孩子然后插入新的孩子,它没有效果。 此外,我在 chrome、ff 和 opera 中得到了相同的行为。因此,常见的核心浏览器 c++ 代码中的内存似乎正在损坏。
所以问题是:有没有人开发了一个稳定的 BIG Web 应用程序(订购 100k 行),具有 BIG 动态 DOM 树(1000 个节点的顺序)和 BIG 应用程序数据(许多 Megs 的顺序)。如果是这样,您究竟使用了哪种动态 DOM 节点创建方法。 任何其他有关内存管理的提示将不胜感激。
【问题讨论】:
-
无论做什么,都不要自己做。那里有很多很棒的工具。事实上,有太多很棒的工具了。
标签: javascript dom tree