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

当我使用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

    面向对象版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

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

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

    66620

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

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

    1.9K40

    如何写成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.8K10

    不容忽视 8 个 DOM API

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

    30220

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

    数据即可查到提交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

    JS快速入门(二)

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

    6.6K30

    再谈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.1K20

    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
    领券