我有一些带有 ID="logo"
的 HTML 元素的 HTML 页面。我需要创建 JS 脚本(没有外部库调用),它将用其他 HTML 元素(如 "<div id=logo> stuff inside </div>"
)覆盖该 html 元素。
原文由 Rella 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一些带有 ID="logo"
的 HTML 元素的 HTML 页面。我需要创建 JS 脚本(没有外部库调用),它将用其他 HTML 元素(如 "<div id=logo> stuff inside </div>"
)覆盖该 html 元素。
原文由 Rella 发布,翻译遵循 CC BY-SA 4.0 许可协议
您真的需要“替换”元素还是可以切换其可见性?这是一种更简单且更有效的技术。最重要的是,它将内容 (html) 与行为 (javascript) 分开。
原文由 Shikhar Mehta 发布,翻译遵循 CC BY-SA 4.0 许可协议
13 回答13.1k 阅读
7 回答2.2k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.4k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
2 回答1.6k 阅读✓ 已解决
大多数时候,它只是您要替换的内容,而不是元素本身。如果您实际替换该元素,您会发现附加到它的事件处理程序不再附加(因为它们附加到旧的)。
替换其 内容
替换元素的 内容 很简单:
innerHTML
属性最近才被 标准化,但所有主流浏览器都支持(也可能是大多数次要浏览器)。 (请参阅下面关于innerHTML
和替代品的注释。)自己替换元素
实际上 替换 元素本身有点困难,但并不多:
关于
innerHTML
和其他 DOM 操作技术的注释在某些浏览器中,使用
innerHTML
有很多问题,主要是围绕表格和表单。如果您可以使用 jQuery 、 Prototype 等库,我会这样做,因为它们内置了解决这些问题的方法。或者,您可以使用其他各种 DOM 方法 而不是
innerHTML
(与我在上面创建 div 和添加/删除时使用的方法相同)。请注意,在大多数浏览器中,通过做一堆createElement
,appendChild
等来做任何大量的标记,调用而不是使用innerHTML
de28cfca4 慢点。将 HTML 解析为它们的内部结构并显示它是 _浏览器的基本工作_,因此它们针对此进行了高度优化。当您浏览 DOM 界面时,您将浏览一个构建在其内部结构之上的层,而无法获得其优化的优势。有时您必须那样做,但大多数情况下,innerHTML
是您的朋友。