DOM疑惑点整理(三)
innerHTML和outerHTML
先说一个几乎众所周知的,innerHTML和outerHTML中的内容都会被解析为DOM子树,其二就是,
<div id="txt" style="width: 100px;height: 100px;border: 1px solid black;"></div>
<script type="text/javascript">
let txt = document.getElementById("txt");
txt.innerHTML = "<p>txt</p>";
</script>
执行效果等于:
<div id="txt" style="width: 100px;height: 100px;border: 1px solid black;">
<p>txt</p>
</div>
而outerHTML的执行,
<div id="txt" style="width: 100px;height: 100px;border: 1px solid black;"></div>
<script type="text/javascript">
let txt = document.getElementById("txt");
txt.outerHTML = "<p>txt</p>";
</script>
执行效果等于:
<p>txt</p>
就是原本的div消失了,调用outer HTML的整个节点全部被替换了。但是该div还存在,并没有被删除,可以通过console.log(txt)看到它。
好的,这些是众所周知的。
在使用innerHTML或者outerHTML过程中,会有一个小细节,有关script的,但并不是script在ie8-的那个无作用域的问题(这个也是众所周知的)。
小细节:
<script type="text/javascript">
let txt = document.getElementById("txt");
txt.innerHTML = "<div id=\"txt1\">1</div>";
txt.innerHTML = "<script id=\"txt2\">var a = 1;</script>";
</script>
这样的代码,在浏览器运行会出错,出错处在第四行,修改第四行为如下,就不会报错:
txt.innerHTML = "<script id=\"txt2\">var a = 1;<\/script>";
需要你加一个转义符号,反观第三行结尾不需要转义符也不会出错。
原因是浏览器解析时遇到</script>就会认为是结束标签就会和第一行的<script>相照应,这个原因应该也是众所周知吧,值得注意的就是记住,用innerHTML的时候,如果有</script>,记得转义符。
innerText和outerText
两者最大区别就是是否会改变调用它们的节点自身,类似上面innerHTML与outerHTML的其二中所描述。
outerText并未写入规范,不建议使用,而且会导致调用它的节点自身消失。
innerText与textContent区别总结:
①<script>和<style>标签的内容,innerText会忽略,后者不会。
②如果innerText中有css内容,就会触发回流,页面重绘(浏览器会根据元素的新属性重新绘制,使元素呈现新的外观),后者不会
③innerText不返回隐藏样式,后者不懂,因此后者全部返回
④ie<=11中,innerText会使得被修改的原本的文本节点,全部被销毁。
⑤两者可能因为浏览器不同,输出的文本格式略有差别
DOM疑惑点整理(三)的更多相关文章
- DOM操作指令整理
DOM操作指令整理: (1) 创建新节点: createDocumentFragment() 创建一个DOM片段 creatElement() 创建一个具体的元素 creatTextNode() 创建 ...
- js dom element 属性整理(原创)
最近去几家公司面试,发现大多数时候面试的内容考的都是原生的js语法和属性,所以我决心整理一下原生的dom元素的属性. 首先,我我们需要获取一个element元素 <li id="2&q ...
- js的dom操作(整理)(转)
js的dom操作整理(整理)(转) 一.总结 一句话总结: dom操作有用原生js的dom操作,也可以用对js封装过的jquery等插件来来更加方便的进行dom操作 1.dom是什么? 对于JavaS ...
- 深入理解DOM节点类型第三篇——注释节点和文档类型节点
× 目录 [1]注释节点 [2]文档类型 前面的话 把注释节点和文档类型节点放在一起是因为IE8-浏览器的一个bug.IE8-浏览器将标签名为"!"的元素视作注释节点,所以文档声明 ...
- Python模块整理(三):子进程模块subprocess
文章 原始出处 http://ipseek.blog.51cto.com/1041109/807513. 本来收集整理网络上相关资料后整理: 从python2.4版本开始,可以用subprocess这 ...
- CSS3 Flex布局整理(三)-项目属性
一.Flex布局中 Flex Item属性控制,可以指定显示顺序.剩余空间的放大,缩小.交叉轴的排列 1.order:定义项目的排列顺序,数值越小,排列越靠前,默认为0.类似z-index 2.fle ...
- HTML5 <Audio>标签API整理(三)
一.浏览器支持 Internet Explorer 9+, Firefox, Opera, Chrome, 和 Safari 都支持 <audio> 元素. 注意: Internet Ex ...
- DOM基础知识整理
--<JavaScript高级程序设计>Chapter10学习笔记 一.节点层次 1.Node类型 1)(Node).nodeType属性 节点nodeType属性有12种. 检测node ...
- SQL Server-简单查询语句,疑惑篇(三)
前言 对于一些原理性文章园中已有大量的文章尤其是关于索引这一块,我也是花费大量时间去学习,对于了解索引原理对于后续理解查询计划和性能调优有很大的帮助,而我们只是一些内容进行概括和总结,这一节我们开始正 ...
随机推荐
- 16/7/8_PHP-设置cookie会话控制(session与cookie)
设置cookie PHP设置Cookie最常用的方法就是使用setcookie函数,setcookie具有7个可选参数,我们常用到的为前5个: name( Cookie名)可以通过$_COOKIE[' ...
- Jmeter之Json表达式关联
Jmeter使用中,通常用的最多的是正则表达式和Xpath表达式,但是现在大多数网站都用的Json返回数据,而且数据还特长的那种,作为合格的测试人员也要适应技术潮流发展,下面介绍利用Json Extr ...
- PAT 1001 A+B Format (20 point(s))
题目: 我一开始的思路是: 用math.h中的log10函数来计算位数(不建议这么做,因为会很慢,而且会出一点别的问题): 用pow函数根据要插入分号的位置来拆分a+b成一个个数字(例如res / p ...
- Spring Boot系列(三) Spring Boot 之 JDBC
数据源 类型 javax.sql.DataSource javax.sql.XADataSource org.springframework.jdbc.datasource.embedded,Enbe ...
- 前端 CSS 优先级 样式设置important
!important 的使用. !important方式来强制让样式生效,但并不推荐使用.因为如果过多的使用!important会使样式文件混乱不易维护. 万不得已可以使用!important 现在选 ...
- Jmeter使用SSL(HTTPS协议)
Jmeter是apache一款开源.小巧的性能测试工具,平时测试web http协议经常使用,其实jmeter同样支持ssl.方法如下: 需要装有目标网站证书的密钥库,即testclient.keys ...
- Flask搭建简单的get请求
用virtualenv venv搭建python虚拟环境.然后执行. #!/usr/bin/env pythonfrom flask import Flask, render_template, re ...
- C++ 14 新特性总结
转载自: http://www.codeceo.com/article/cpp-14-new-features.html C++14 这一继C++11 之后的新的 C++ 标准已经被正式批准,正在向 ...
- python进阶之类的反射
有应用场景的技术才是有灵魂的技术------>最近同时问我,在python中,给你一个函数或者类的字符串名称,你怎么得到该函数和类,以下结合源码记录我得到的方式: 1.给一个函数的字符串&quo ...
- Javascript 中的深浅拷贝
工作中经常会遇到需要复制 JS 数据的时候,遇到 bug 时实在令人头疼:面试中也经常会被问到如何实现一个数据的深浅拷贝,但是你对其中的原理清晰吗?一起来看一下吧! 为什么会有深浅拷贝 想要更加透彻的 ...