首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当我使用insertAdjacentHTML时,会出现神秘的字符(“beforeend”...向DOM添加元素

基础概念

insertAdjacentHTML 是一个 DOM 方法,用于在指定元素的前后插入 HTML 字符串。这个方法不会重新解析它正在使用的元素,因此不会破坏元素内的元素。它可以接受两个参数:插入位置和要插入的 HTML 字符串。

优势

  • 性能:相比于使用 innerHTML 来插入大量 HTML,insertAdjacentHTML 更加高效,因为它不会清除目标元素内的内容。
  • 安全性:由于不会重新解析元素,因此减少了 XSS 攻击的风险。
  • 灵活性:可以在元素的多个位置插入内容,如 beforebeginafterbeginbeforeendafterend

类型

  • beforebegin:在元素自身的前面。
  • afterbegin:在元素内部的开头。
  • beforeend:在元素内部的末尾。
  • afterend:在元素自身的后面。

应用场景

当你需要在 DOM 中插入 HTML 内容,但又不想破坏现有结构时,可以使用 insertAdjacentHTML。例如,在列表项后添加新的列表项,或者在某个元素的后面动态添加广告等。

可能出现的问题及解决方法

神秘字符问题

如果你在使用 insertAdjacentHTML 时遇到了神秘字符,这可能是由于以下原因:

  1. HTML 字符串格式不正确:确保你插入的 HTML 字符串是正确闭合的,没有遗漏标签。
  2. 特殊字符未转义:如果 HTML 字符串中包含特殊字符(如 <>& 等),需要进行转义。
  3. 浏览器兼容性问题:不同浏览器对 insertAdjacentHTML 的实现可能有所不同,确保你的代码在目标浏览器中进行了测试。

示例代码

代码语言:txt
复制
// 假设我们有一个 div 元素
const divElement = document.getElementById('myDiv');

// 正确的 HTML 字符串
const htmlString = '<p>这是一个新的段落。</p>';

// 使用 insertAdjacentHTML 在 div 元素的末尾插入 HTML
divElement.insertAdjacentHTML('beforeend', htmlString);

参考链接

解决神秘字符问题

  1. 检查 HTML 字符串
  2. 检查 HTML 字符串
  3. 转义特殊字符
  4. 转义特殊字符
  5. 浏览器兼容性测试
    • 使用工具如 Can I use 检查 insertAdjacentHTML 的浏览器支持情况。
    • 在不同浏览器中进行测试,确保兼容性。

通过以上方法,你应该能够解决使用 insertAdjacentHTML 时出现的神秘字符问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

面向对象版tab 栏切换

[i].index = i; this.lis[i].onclick = this.toggleTab; 使用排他,实现只有一个元素的显示 toggleTab() {   //将所有的标题与内容类样式全部移除...'; } 4、添加 MDN Web文档:https://developer.mozilla.org 查询insertAdjacentHTML用法 点击+可以实现添加新的选项卡和内容 一步...现在高级做法:利用insertAdjacentHTML()可以直接把字符串格式元素添加到父元素中 appendChild不支持追加字符串的子元素, insertAdjacentHTML支持追加字符串的元素...   that.ul.insertAdjacentHTML('beforeend', li);    that.fsection.insertAdjacentHTML('beforeend', section...; 在双击事件处理文本选中状态,修改内部DOM节点,实现新旧value值的传递 editTab() {    var str = this.innerHTML;    // 双击禁止选定文字

3.9K30
  • 面向对象版tab 栏切换

    ].onclick = this.toggleTab; 使用排他,实现只有一个元素的显示 toggleTab() { //将所有的标题与内容类样式全部移除 for (var i...that.ul.insertAdjacentHTML('beforeend', li); that.fsection.insertAdjacentHTML('beforeend', section...1.点击+可以实现添加新的选项卡和内容 2.第一步:创建新的选项卡li和新的内容section 3.第二步: 把创建的两个元素追加到对应的父元素中. 4.以前的做法:动态创建元素createElement..., 但是元素里面内容较多,需要innerHTML赋值在appendChild 追加到父元素里面. 5.现在高级做法:利用insertAdjacentHTMLO可以直接把字符串格式元素添加到父元素中...6.appendChild不支持追加字符串的子 愫, insertAdjacentHTML支持追加字符串的元素

    2K30

    13个需要知道的方法:使用 JavaScript 来操作 DOM

    请注意,返回的节点不再是DOM的一部分,而是仍存在于内存中。 如果处理不当,可能会导致内存泄漏。...它不会重新解析它正在使用的元素,因此它不会破坏元素内的现有元素。这避免了额外的序列化步骤,使其比直接innerHTML操作更快。...position是相对于元素的位置,并且必须是以下字符串之一: beforebegin:元素自身的前面。 afterbegin:插入元素内部的第一个子节点之前。...beforeend:插入元素内部的最后一个子节点之后。 afterend:元素自身的后面。 text是要被解析为HTML或XML,并插入到DOM树中的字符串。 DOM树非常重要,如果操作不正确,可能会导致严重后果。

    66720

    如何写成Strview.js之源码剖析

    我们在对象中发现了Hello World字符串,并且我们在template属性中看到它多所对应的值是一个标签,就是这个标签{msg},另外,里面我们会看到使用{}包裹的msg字符。...document.querySelector(v.el).insertAdjacentHTML("beforeEnd", render(globalObj....insertAdjacentHTML() 方法将指定的文本解析为 Element 元素,并将结果节点插入到DOM树中的指定位置。它不会重新解析它正在使用的元素,因此它不会破坏元素内的现有元素。...insertAdjacentHTML()方法传入的第二个参数是是要被解析为HTML或XML元素,并插入到DOM树中的DOMString,render(globalObj....一旦建立了一个解析对象以后,你就可以使用它的parseFromString方法来解析一个html字符串。

    1.3K20

    「JS高级」面向对象编程

    ,同时返回实例对象; constructor函数只要new生成实例时,就会自动调用这个函数,如果我们不写这个函数,类也会自动生成这个函数; 多个函数方法之间不需要添加逗号分隔; 生成实例new不能省略;...双击tab项文字或者内容项文字可以修改里面的文字内容 3.2案例准备 获取到标题元素 获取到内容元素 获取到删除的小按钮 x号 新建js文件,定义类,添加需要的属性方法(切换,删除,增加,修改) 时刻注意...that.ul.insertAdjacentHTML('beforeend', li); that.fsection.insertAdjacentHTML('beforeend', section...>'; thisReplace.sectionFather.insertAdjacentHTML('beforeend', section); thisReplace.init...thisReplace.lis[index].remove(); thisReplace.sections[index].remove(); // 删除元素后,让删除最后一个元素时然之前的一个元素处于选中状态

    1.9K10

    属性 元素的内容 创建,插入和删除节点 虚拟节点

    数据即可查到提交的post数据 ps 不能在头部引入,会出现找不到DOM节点的情况,请在文末引入 获取和设置非标准的HTML属性 现在说的是一个html的属性,即HTMLElemnent对象定义的html...innerHTML会返回其中的HTML代码,包括标签 但是textContent不会,会把所有的内容统统返回 插入元素内容 有两个定义好的api分别是element.insertAdjacentHTML...以及 Element.insertAdjacentText() 这两个元素内容 element.insertAdjacentHTML() 这个会将文本解析为html或者xml,并且将结果插入指定的DOM...(); // 从后到前循环子节点,使得每一个子节点移动到临时容器中 // n的最后一个节点变成f的第一个节点 // 每次给f添加一个节点该节点会自动从n中删除 while(n.lastChild...) f.appendChild(n.lastChild); // 添加子节点 // 最后,把f的所有子节点一次性全部移回n中 n.appendChild(f); }; insertAdjacentHTML

    2.4K30

    不容忽视的 8 个 DOM API

    文档对象模型(DOM)提供了许多强大的功能,在现代浏览器中无需外部依赖即可使用。在本文中,我们将探讨8个可能被忽视的DOM功能 1....使用 addEventListener() 方法与 options 最常用的DOM方法之一是 addEventListener() ,它允许我们将事件监听器附加到元素上。...与 classList 一起进行类操作 在JavaScript中,当与元素一起工作时,类操作是一项常见任务。 classList 属性提供了一组方法,简化了在元素上添加、删除和切换类的操作。...当你想根据元素是否匹配特定选择器执行某些操作时, matches() 方法非常有用。它消除了手动遍历DOM或使用复杂的CSS选择器匹配逻辑的需要。 5....平滑动画的方法 在网页上为元素添加动画效果是一个常见的需求,但有时候也是一项具有挑战性的任务。

    32820

    C1能力认证训练题解析 _ 第四部分 _ Web进阶「建议收藏」

    如果属性已经存在,则更新该值;否则,使用指定的名称和值添加一个新的属性 通过属性名更改属性 对元素属性重新赋值可更改对应属性值 2....,插入的值为字符串,所以需要使用可以解析html字符串的DOM属性,返回元素中的html内容。....________ ('第二行') 答案:write 此处需要在div后添加一个元素,应使用对应的节点写入方法,将html字符串解析为html元素并写入到html...字符代码 – 表示ASCII字符的数字 键盘代码 – 表示键盘上真实键的数字 charCode 返回keypress事件触发时按下的字符键的字符Unicode值,用于keydown或keyup时总是返回...写在了h1元素上方,所以需要等待页面加载完成才能获取到此元素,此处需使用页面加载完成时触发的事件。

    2K20

    前端常见技术点 - CSS DOM 布局(43问)

    浏览器的默认行为是把 inline 元素间的空白字符(空格、换行、Tab)渲染成一个空格,这个问题不止出现在 li 元素上; 解决方案: 1、所以把所有 li 放到同一行; 2、将这些被渲染成空格的字符...DOM 属性访问器:通用性差、扩展性差;但取到的是一个实用对象; g/setAttribute:取到的只是字符串,通用性; dataset:element.dataset;(取到该 DOM 元素上所有的自定义属性...到这个文档片段,最后一次性的将该文档片段 appendChild 到 DOM 树上;由于拼接子元素的过程是在内存中进行的因此可以减少页面的回流和重绘; 2、使用 insertAdjacentHTML(...position, text) 直接向页面插入 HTML 片段,position 分为四个值:beforebegin、afterbegin、beforeend、afterend; 43、em rem vh...ch:常与等宽字体联合使用“Consolas,Monaco,monospace”。1ch 表示一个0字符的宽度,因此只有在等宽字体的情况下,我们才能用 ch 来精确的调整字符的显示。

    1.5K30

    面向对象版tab 栏切换案例

    双击tab项文字或者内容项文字可以修改里面的文字内容 1.2案例准备 获取到标题元素 获取到内容元素 获取到删除的小按钮 x号 新建js文件,定义类,添加需要的属性方法(切换,删除...[i].onclick = this.toggleTab; 使用排他,实现只有一个元素的显示 toggleTab() { //将所有的标题与内容类样式全部移除 for (...that.ul.insertAdjacentHTML('beforeend', li); that.fsection.insertAdjacentHTML('beforeend', section....remove(); that.sections[index].remove(); that.init(); // 当我们删除的不是选中状态的li 的时候,原来的选中状态li...; 在双击事件处理文本选中状态,修改内部DOM节点,实现新旧value值的传递 editTab() { var str = this.innerHTML; // 双击禁止选定文字

    2.2K30

    再谈BOM和DOM(2):DOM节点层次属性选择器节点关系操作详解

    10 DocumentType 向为文档定义的实体提供接口 11 DocumentFragment 代表轻量级的 Document 对象,能够容纳文档的某个部分 12 Notation 代表 DTD 中声明的符号...:name属性名 getElementsByClassName() 一个参数:包含一个或多个类名的字符串 querySelector() 接收CSS选择符,返回匹配到的第一个元素,没有则null querySelectorAll...)外,还有其他操作 nodeName 访问元素的标签名 tagName 访问元素的标签名 createElement() 创建节点 appendChild() 末尾添加节点,并返回新增节点 insertBefore...(是否复制子节点) insertAdjacentHTML() 插入文本,两个参数:插入的位置和要插入文本"beforebegin",在该元素前插入"afterbegin",在该元素第一个子元素前插入"beforeend...",在该元素最后一个子元素后面插入"afterend",在该元素后插入 "beforebegin",在该元素前插入 "afterbegin",在该元素第一个子元素前插入 "beforeend",在该元素最后一个子元素后面插入

    1.2K20

    JS快速入门(二)

    (直接查找) 通过属性获取节点方法(间接查找) 常用的节点属性获取方式 DOM修改、删除、添加 DOM修改 DOM添加 DOM删除 DOM控制CSS样式 通过 style 属性控制样式 通过 classList...修改、删除、添加 上面介绍的是DOM获取方法和属性,下面介绍如何交互,主要用到修改、删除、添加 DOM修改 方法 说明 innerHTML innerHTML 除了获取元素内容,也可通过赋值用于修改元素中内容...'beforeend' 插入元素内部的最后一个子节点之后 'afterend' 元素自身的后面 示例 beforeend','元素2后面') div.insertAdjacentHTML('afterend','元素自身后面') DOM删除 element.removeChild...,所以应该将代码放在 load 事件中,等待元素加载完成后再 获取其内容; 使用 onload 绑定事件时,注意一个页面不要存在多个 onload,这样会只会运行最后一个 onload 中的代码,推荐使用

    6.6K30

    HTML5中的DOM扩展(三)插入标记

    插入标记 我们之前用的api大多数都是获取元素内容,HTML5规范中定义了一个向标签元素内添加内容的方法。...innerHTML innerHTML是向元素内插入一个字符串,注释或者文本标记,它会根据现在提供的内容重新渲染到DOM树上,替代之前元素包含的所有节点。...insertAdjacentHTML()和inserAdjacentText() 这俩个方法都接受俩个参数,第一个参数是固定的,必须是以下4中类型 "beforebegin",插入当前元素前面,作为前一个同胞节点...; "afterbegin",插入当前元素内部,作为新的子节点或放在第一个子节点前面; "beforeend",插入当前元素内部,作为新的子节点或放在最后一个子节点后面; "afterend",插入当前元素后面...还有一个就是不要用循环来替换或者添加元素,这样每次是通过先获取再添加,也会占据很大的性能。

    2K40
    领券