
动态添加的 html 元素(如 `
- `)在表单提交后瞬间消失,根本原因是表单默认提交行为触发页面刷新,且存在 dom 插入逻辑错误(`
- ` 文本未正确附加到 `
- ` 节点)。本文详解修复方法与最佳实践。
在使用 javaScript 动态创建并插入 html 元素时,若内容“闪现即逝”,通常由两个关键问题导致:DOM 结构错误 和 表单默认提交行为未阻止。以下将逐一分析并提供完整、健壮的修复方案。
? 问题一:DOM 插入逻辑错误
原代码中,txt2(用户输入的文本节点)被错误地直接附加到
- 元素 x 上:
- ,而非
- 是
- 的合法子元素,但文本节点不能直接作为
- 或
- 内)。正确做法是先将文本节点附加到
- 元素 z,再将 z 附加到
- x:
- x.appendChild(z); // ✅ 正确:
- 属于
- 属于
var z = document.createElement("DD"); var txt2 = document.createTextNode(textArea.value); z.appendChild(txt2); // ✅ 正确:文本属于⚠️ 问题二:表单提交导致页面刷新
触发
- 元素 z,再将 z 附加到
- 的子节点(应包裹在
var txt2 = document.createTextnode(textArea.value); x.appendChild(txt2); // ❌ 错误:textNode 应附加到这违反了 HTML 语义结构——
- ` 节点)。本文详解修复方法与最佳实践。