首页 > 其他分享 >js 插入标记

js 插入标记

时间:2024-02-06 23:01:51浏览次数:27  
标签:DOM 标记 元素 js 插入 HTML innerText outerText 文本

HTML5 将 IE 发明的 innerHTML 和 outerHTML 纳入了标准,但还有两个属性没有入选。这两个剩下的属性是 innerText 和 outerText。

  1. innerText 属性 innerText 属性对应元素中包含的所有文本内容,无论文本在子树中哪个层级。在用于读取值时,innerText 会按照深度优先的顺序将子树中所有文本节点的值拼接起来。在用于写入值时innerText会移除元素的所有后代并插入一个包含该值的文本节点。来看下面的 HTML 代码:
<p>This is a <strong>paragraph</strong> with a list following it.</p> 
 <ul> 
 <li>Item 1</li> 
 <li>Item 2</li> 
 <li>Item 3</li> 
 </ul> 
</div>

对这个例子中的

而言,innerText 属性会返回以下字符串:

Item 1 
Item 2 
Item 3

注意不同浏览器对待空格的方式不同,因此格式化之后的字符串可能包含也可能不包含原始 HTML代码中的缩进。 下面再看一个使用 innerText 设置

元素内容的例子:

执行这行代码后,HTML 页面中的这个

元素实际上会变成这个样子:

设置 innerText 会移除元素之前所有的后代节点,完全改变 DOM 子树。此外,设置 innerText也会编码出现在字符串中的 HTML 语法字符(小于号、大于号、引号及和号)。下面是一个例子:

执行之后的结果如下:

因为设置 innerText 只能在容器元素中生成一个文本节点,所以为了保证一定是文本节点,就必须进行 HTML 编码。innerText 属性可以用于去除 HTML 标签。通过将 innerText 设置为等于 innerText,可以去除所有 HTML 标签而只剩文本,如下所示:

执行以上代码后,容器元素的内容只会包含原先的文本内容。 outerText 属性 outerText 与 innerText 是类似的,只不过作用范围包含调用它的节点。要读取文本值时,outerText 与 innerText 实际上会返回同样的内容。但在写入文本值时,outerText 就大不相同了。 写入文本值时,outerText 不止会移除所有后代节点,而是会替换整个元素。比如:

这行代码的执行效果就相当于以下两行代码:

div.parentNode.replaceChild(text, div);

本质上,这相当于用新的文本节点替代 outerText 所在的元素。此时,原来的元素会与文档脱离关系,因此也无法访问。 outerText 是一个非标准的属性,而且也没有被标准化的前景。因此,不推荐依赖这个属性实现重要的操作。除 Firefox 之外所有主流浏览器都支持 outerText。 滚动 如前所述,滚动是 HTML5 之前 DOM 标准没有涉及的领域。虽然 HTML5 把 scrollIntoView() 标准化了,但不同浏览器中仍然有其他专有方法。比如,```scrollIntoViewIfNeeded()作 为 HTMLElement 类型的扩展可以在所有元素上调用。scrollIntoViewIfNeeded(alingCenter)会在 元素不可见的情况下,将其滚动到窗口或包含窗口中,使其可见;如果已经在视口中可见,则这个方法

什么也不做。如果将可选的参数 alingCenter 设置为 true,则浏览器会尝试将其放在视口中央。Safari、Chrome 和 Opera 实现了这个方法。
下面使用 scrollIntoViewIfNeeded()方法的一个例子:
```// 如果不可见,则将元素可见
document.images[0].scrollIntoViewIfNeeded();

考虑到 scrollIntoView()是唯一一个所有浏览器都支持的方法,所以只用它就可以了。 小结 虽然 DOM 规定了与 XML 和 HTML 文档交互的核心 API,但其他几个规范也定义了对 DOM 的扩展。很多扩展都基于之前的已成为事实标准的专有特性标准化而来。本章主要介绍了以下 3 个规范。  Selectors API 为基于 CSS 选择符获取 DOM 元素定义了几个方法:querySelector()、querySelectorAll()和 matches()。  Element Traversal 在 DOM 元素上定义了额外的属性,以方便对 DOM 元素进行遍历。这个需求是因浏览器处理元素间空格的差异而产生的。  HTML5 为标准 DOM 提供了大量扩展。其中包括对 innerHTML 属性等事实标准进行了标准化,还有焦点管理、字符集、滚动等特性。 DOM 扩展的数量总体还不大,但随着 Web 技术的发展一定会越来越多。浏览器仍然没有停止对专有扩展的探索,如果出现成功的扩展,那么就可能成为事实标准,或者最终被整合到未来的标准中。

标签:DOM,标记,元素,js,插入,HTML,innerText,outerText,文本
From: https://blog.51cto.com/u_16237074/9632435

相关文章

  • js scrollIntoView()
    DOM规范中没有涉及的一个问题是如何滚动页面中的某个区域。为填充这方面的缺失,不同浏览器实现了不同的控制滚动的方式。在所有这些专有方法中,HTML5选择了标准化scrollIntoView()。scrollIntoView()方法存在于所有HTML元素上,可以滚动浏览器窗口或容器元素以便包含元素进入视口......
  • js 字符集属性
    HTML5增加了几个与文档字符集有关的新属性。其中,characterSet属性表示文档实际使用的字符集,也可以用来指定新字符集。这个属性的默认值是"UTF-16",但可以通过元素或响应头,以及新增的characterSeet属性来修改。下面是一个例子:document.characterSet="UTF-8";自定义数据属性HTM......
  • js 焦点管理
    HTML5增加了辅助DOM焦点管理的功能。首先是document.activeElement,始终包含当前拥有焦点的DOM元素。页面加载时,可以通过用户输入(按Tab键或代码中使用focus()方法)让某个元素自动获得焦点。例如:```letbutton=document.getElementById("myButton");button.focus();conso......
  • 【nw.js】使用nw.js将html页面打包成exe免安装程序
    @[TOC]一、批处理zip命令(已有可跳过此步骤)下载zip,你可以到该网址下载zip执行文件,如下图:将文件路径配置到环境变量中,具体操作如下:右键计算机——>属性——>高级系统设置——>高级——>环境变量——>系统变量——>找到path,双击——>新建——>将所在路径添加进去(如:“F:\zip”包含进环......
  • spring boot controller设置返回json
    在SpringBoot中,Controller通常会返回JSON格式的数据,这得益于SpringBoot的自动配置能力以及内嵌的Jackson库。以下是如何设置Controller返回JSON数据的基本步骤:添加依赖:首先,确保你的项目中包含了SpringBoot的WebStarter依赖,它已经包括了Jackson库,用于处理JSON序列化。<dependen......
  • app.json 中未定义自定义编译中指定的启动页面
    换了启动页,这里得手动改。。。。。。。。。。。[app.json或自定义编译条件错误]app.json中未定义自定义编译中指定的启动页面./pages/index/index(env:Windows),......
  • nodejs学习计划--(三)http协议和IP介绍
    一、HTPP协议1、概念HTTP(hypertexttransportprotocol)协议;中文叫超文本传输协议是一种基于TCP/IP的应用层通信协议这个协议详细规定了浏览器和万维网服务器之间互相通信的规则。协议中主要规定了两个方面的内容客户端:用来向服务器发送数据,可以被称之为请求报文服务端......
  • js相关知识
    toFixed(num)只保留小数点后几位例如:console.log(0.1+0.2)   //0.300000000000004console.log((0.1+0.2).toFixed(1));   //输出值为0.3 === 比较运算符,要求数值和数值类型都要相等,返回truedocument.writeln(数据) 能将数据输出到页面上 遍历数组的两种方......
  • nginx改变访问应用端口以及解决css,js或表单提交访问不到的问题
    场景如果原先某个网站是通过ip:8080直接访问的,现在想要加个前缀,并且去掉端口进行访问,比如ip/myapp去访问这个项目,可以通过nginx来实现这个过程。最近有个需求需要变更redmine的访问路径,从ip:8080改成ip/redmine,下面以redmine举例子。配置过程以ip/redmine来访问原先ip:8080的项......
  • 使用JS来开发ProComponents的ProTable案例
    ProComponents的ProTable组件是基于React和TypeScript开发的,但也可以在JavaScript项目中使用。以下是一个使用JavaScript的ProTable示例:import{useState,useRef}from'react';import{Button}from'antd';importProTablefrom'@ant-design/pro-table&#......