<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JS闭包 &#8211; 个人随笔</title>
	<atom:link href="/label/js%E9%97%AD%E5%8C%85/feed" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description></description>
	<lastBuildDate>Sat, 19 May 2018 06:56:20 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.1</generator>

<image>
	<url>/wp-content/uploads/2022/01/cropped-截屏2022-01-01-18.57.09-32x32.png</url>
	<title>JS闭包 &#8211; 个人随笔</title>
	<link>/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>JS高级（二）事件、JS闭包、DOM</title>
		<link>/%e5%89%8d%e7%ab%af%e6%8a%80%e6%9c%af/3136.html</link>
					<comments>/%e5%89%8d%e7%ab%af%e6%8a%80%e6%9c%af/3136.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Sat, 19 May 2018 06:56:20 +0000</pubDate>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[前端技术]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[JS闭包]]></category>
		<category><![CDATA[事件]]></category>
		<guid isPermaLink="false">/?p=3136</guid>

					<description><![CDATA[JavaScript高级（2） 目录 一、回顾与加强 1、JavaScript错误类型及特点 1、编译类型的错 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>
  JavaScript高级（2）
</p>
<p>
  目录
</p>
<h1>一、回顾与加强</h1>
<p>
  1、JavaScript错误类型及特点
</p>
<p>
  1、编译类型的错误
</p>
<p>
  编译错误就是语法错误。
</p>
<p>
  <img fetchpriority="high" decoding="async" width="1017" height="238" src="/wp-content/uploads/2018/05/word-image-2758.png" class="wp-image-3137" srcset="/wp-content/uploads/2018/05/word-image-2758.png 1017w, /wp-content/uploads/2018/05/word-image-2758-300x70.png 300w, /wp-content/uploads/2018/05/word-image-2758-768x180.png 768w" sizes="(max-width: 1017px) 100vw, 1017px" />
</p>
<p>
  2、执行错误
</p>
<p>
  语法上没有错误，结合上下午出现的错误，比如调用了一个不存在的变量或函数等。
</p>
<p>
  <img decoding="async" width="1056" height="252" src="/wp-content/uploads/2018/05/word-image-2759.png" class="wp-image-3138" srcset="/wp-content/uploads/2018/05/word-image-2759.png 1056w, /wp-content/uploads/2018/05/word-image-2759-300x72.png 300w, /wp-content/uploads/2018/05/word-image-2759-768x183.png 768w, /wp-content/uploads/2018/05/word-image-2759-1024x244.png 1024w" sizes="(max-width: 1056px) 100vw, 1056px" />
</p>
<p>
  2、事件
</p>
<p>
  1、事件驱动式
</p>
<p>
  事件驱动式由：用户的行为+JavaScript引擎捕获用户的行为+<strong>调用处理函数</strong>。实际上就是一个事件的组成。
</p>
<p>
  2、事件处理函数的绑定与执行
</p>
<p>
  ①、行内绑定
</p>
<p>
  在HTML标签内指定事件并写处理程序。
</p>
<p>
  <img decoding="async" width="847" height="245" src="/wp-content/uploads/2018/05/word-image-2760.png" class="wp-image-3139" srcset="/wp-content/uploads/2018/05/word-image-2760.png 847w, /wp-content/uploads/2018/05/word-image-2760-300x87.png 300w, /wp-content/uploads/2018/05/word-image-2760-768x222.png 768w" sizes="(max-width: 847px) 100vw, 847px" />
</p>
<p>
  ②、行内绑定—动态绑定
</p>
<p>
  如果事件的处理程序又大段的js代码，那么直接写到行内，肯定是不合理的，解决的办法是将大段的js代码封装成函数，然后触发事件的时候，调用这个函数。
</p>
<p>
  <img loading="lazy" decoding="async" width="910" height="279" src="/wp-content/uploads/2018/05/word-image-2761.png" class="wp-image-3140" srcset="/wp-content/uploads/2018/05/word-image-2761.png 910w, /wp-content/uploads/2018/05/word-image-2761-300x92.png 300w, /wp-content/uploads/2018/05/word-image-2761-768x235.png 768w" sizes="(max-width: 910px) 100vw, 910px" />
</p>
<p>
  ③、动态绑定
</p>
<p>
  通过获取元素（标签、节点）的dom对象，然后给dom对象绑定事件的方式来实现事件的绑定。
</p>
<p>
  <img loading="lazy" decoding="async" width="858" height="224" src="/wp-content/uploads/2018/05/word-image-2762.png" class="wp-image-3141" srcset="/wp-content/uploads/2018/05/word-image-2762.png 858w, /wp-content/uploads/2018/05/word-image-2762-300x78.png 300w, /wp-content/uploads/2018/05/word-image-2762-768x201.png 768w" sizes="(max-width: 858px) 100vw, 858px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="1051" height="377" src="/wp-content/uploads/2018/05/word-image-2763.png" class="wp-image-3142" srcset="/wp-content/uploads/2018/05/word-image-2763.png 1051w, /wp-content/uploads/2018/05/word-image-2763-300x108.png 300w, /wp-content/uploads/2018/05/word-image-2763-768x275.png 768w, /wp-content/uploads/2018/05/word-image-2763-1024x367.png 1024w" sizes="(max-width: 1051px) 100vw, 1051px" />
</p>
<p>
  3、在事件处理程序中，this分别表示什么
</p>
<p>
  ①、行内绑定
</p>
<p>
  <img loading="lazy" decoding="async" width="594" height="31" src="/wp-content/uploads/2018/05/word-image-2764.png" class="wp-image-3143" srcset="/wp-content/uploads/2018/05/word-image-2764.png 594w, /wp-content/uploads/2018/05/word-image-2764-300x16.png 300w" sizes="(max-width: 594px) 100vw, 594px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="645" height="242" src="/wp-content/uploads/2018/05/word-image-2765.png" class="wp-image-3144" srcset="/wp-content/uploads/2018/05/word-image-2765.png 645w, /wp-content/uploads/2018/05/word-image-2765-300x113.png 300w" sizes="(max-width: 645px) 100vw, 645px" />
</p>
<p>
  ②、行内绑定—动态执行
</p>
<p>
  <img loading="lazy" decoding="async" width="1026" height="277" src="/wp-content/uploads/2018/05/word-image-2766.png" class="wp-image-3145" srcset="/wp-content/uploads/2018/05/word-image-2766.png 1026w, /wp-content/uploads/2018/05/word-image-2766-300x81.png 300w, /wp-content/uploads/2018/05/word-image-2766-768x207.png 768w, /wp-content/uploads/2018/05/word-image-2766-1024x276.png 1024w" sizes="(max-width: 1026px) 100vw, 1026px" />
</p>
<p>
  ③、动态绑定
</p>
<p>
  <img loading="lazy" decoding="async" width="1022" height="262" src="/wp-content/uploads/2018/05/word-image-2767.png" class="wp-image-3146" srcset="/wp-content/uploads/2018/05/word-image-2767.png 1022w, /wp-content/uploads/2018/05/word-image-2767-300x77.png 300w, /wp-content/uploads/2018/05/word-image-2767-768x197.png 768w" sizes="(max-width: 1022px) 100vw, 1022px" />
</p>
<h1>二、闭包</h1>
<p>
  1、概念
</p>
<p>
  闭包，指的是词法表示包括不被计算的变量的函数，也就是说，函数可以使用函数之外定义的变量。
</p>
<p>
  2、特点（作用）
</p>
<p>
  1、和作用域的特定一致
</p>
<p>
  可以在函数内部使用函数外部的变量。
</p>
<p>
  <img loading="lazy" decoding="async" width="706" height="183" src="/wp-content/uploads/2018/05/word-image-2768.png" class="wp-image-3147" srcset="/wp-content/uploads/2018/05/word-image-2768.png 706w, /wp-content/uploads/2018/05/word-image-2768-300x78.png 300w" sizes="(max-width: 706px) 100vw, 706px" />
</p>
<p>
  2、使用闭包，内存不会释放
</p>
<p>
  <img loading="lazy" decoding="async" width="820" height="309" src="/wp-content/uploads/2018/05/word-image-2769.png" class="wp-image-3148" srcset="/wp-content/uploads/2018/05/word-image-2769.png 820w, /wp-content/uploads/2018/05/word-image-2769-300x113.png 300w, /wp-content/uploads/2018/05/word-image-2769-768x289.png 768w" sizes="(max-width: 820px) 100vw, 820px" />
</p>
<p>
  3、案例
</p>
<p>
  1、点击页面中的三个li标签，能够正常输出li的下标
</p>
<p>
  <img loading="lazy" decoding="async" width="1127" height="451" src="/wp-content/uploads/2018/05/word-image-2770.png" class="wp-image-3149" srcset="/wp-content/uploads/2018/05/word-image-2770.png 1127w, /wp-content/uploads/2018/05/word-image-2770-300x120.png 300w, /wp-content/uploads/2018/05/word-image-2770-768x307.png 768w, /wp-content/uploads/2018/05/word-image-2770-1024x410.png 1024w" sizes="(max-width: 1127px) 100vw, 1127px" />
</p>
<p>
  上面案例的另一种写法：
</p>
<p>
  <img loading="lazy" decoding="async" width="820" height="379" src="/wp-content/uploads/2018/05/word-image-2771.png" class="wp-image-3150" srcset="/wp-content/uploads/2018/05/word-image-2771.png 820w, /wp-content/uploads/2018/05/word-image-2771-300x139.png 300w, /wp-content/uploads/2018/05/word-image-2771-768x355.png 768w" sizes="(max-width: 820px) 100vw, 820px" />
</p>
<p>
  2、页面刷新后，每隔1秒分别输出1/2/3/4/5
</p>
<p>
  <img loading="lazy" decoding="async" width="838" height="416" src="/wp-content/uploads/2018/05/word-image-2772.png" class="wp-image-3151" srcset="/wp-content/uploads/2018/05/word-image-2772.png 838w, /wp-content/uploads/2018/05/word-image-2772-300x149.png 300w, /wp-content/uploads/2018/05/word-image-2772-768x381.png 768w" sizes="(max-width: 838px) 100vw, 838px" />
</p>
<h1>三、DOM</h1>
<p>
  1、什么是DOM
</p>
<p>
  DOM全称是Document Object Model（文档对象模型），它是JS将HTML按文档结构和内容层次抽象出的模型，使得JS有了访问HTML的能力，能够实现对HTML中内容的操作。DOM存在广泛，PHP以及其他语言也有各自的DOM模型。
</p>
<p>
  DOM模型呈现树状结构，因此也叫“树模型”，树中的内容（标签、属性、文本）称为“节点”，包含有元素节点（标签）、属性节点、文本节点。每个节点，都是一个dom节点对象。
</p>
<p>
  2、节点与DOM模型
</p>
<p>
  <img loading="lazy" decoding="async" width="515" height="276" src="/wp-content/uploads/2018/05/word-image-2773.png" class="wp-image-3152" srcset="/wp-content/uploads/2018/05/word-image-2773.png 515w, /wp-content/uploads/2018/05/word-image-2773-300x161.png 300w" sizes="(max-width: 515px) 100vw, 515px" />
</p>
<p>
  根据 W3C 的 HTML DOM 标准，HTML 文档中的所有内容都是节点：
</p>
<p>
  整个文档是一个文档节点，用document对象表示
</p>
<p>
  每个 HTML 元素是元素节点，比如html、head、body、a、h1
</p>
<p>
  HTML 元素内的文本是文本节点
</p>
<p>
  每个 HTML 属性是属性节点，比如href
</p>
<p>
  注释是注释节点
</p>
<p>
  3、节点之间的关系
</p>
<p>
  <img loading="lazy" decoding="async" width="383" height="259" src="/wp-content/uploads/2018/05/word-image-2774.png" class="wp-image-3153" srcset="/wp-content/uploads/2018/05/word-image-2774.png 383w, /wp-content/uploads/2018/05/word-image-2774-300x203.png 300w, /wp-content/uploads/2018/05/word-image-2774-220x150.png 220w" sizes="(max-width: 383px) 100vw, 383px" />
</p>
<p>
  4、元素节点查询操作
</p>
<p>
  1、基于文档（document）查询
</p>
<p>
  document.getElementById(元素id);   //得到一个dom对象
</p>
<p>
  document.getElementsByTagName(标签名); //得到的是一个数组，数组的每个单元是一个dom对象
</p>
<p>
  前面这两种方法推荐使用，因为兼容性好。
</p>
<p>
  document.getElementsByClassName(类名);  //IE8+支持，就是从IE9支持 得到的是一个数组，数组的每个单元是一个dom对象
</p>
<p>
  document.getElementsByName(元素的name属性); //得到的是一个数组
</p>
<p>
  //h5中提供的方法
</p>
<p>
  document.querySelector(css选择器); //IE7+支持  得到的是一个dom对象
</p>
<p>
  document.querySelectorAll(css选择器); //IE7+支持  得到的是一个数组
</p>
<p>
  测试的html：
</p>
<p>
  <img loading="lazy" decoding="async" width="623" height="203" src="/wp-content/uploads/2018/05/word-image-2775.png" class="wp-image-3154" srcset="/wp-content/uploads/2018/05/word-image-2775.png 623w, /wp-content/uploads/2018/05/word-image-2775-300x98.png 300w" sizes="(max-width: 623px) 100vw, 623px" />
</p>
<p>
  js代码及效果：
</p>
<p>
  <img loading="lazy" decoding="async" width="1291" height="392" src="/wp-content/uploads/2018/05/word-image-2776.png" class="wp-image-3155" srcset="/wp-content/uploads/2018/05/word-image-2776.png 1291w, /wp-content/uploads/2018/05/word-image-2776-300x91.png 300w, /wp-content/uploads/2018/05/word-image-2776-768x233.png 768w, /wp-content/uploads/2018/05/word-image-2776-1024x311.png 1024w" sizes="(max-width: 1291px) 100vw, 1291px" />
</p>
<p>
  2、相互关系查询
</p>
<p>
  ①、根据父节点查找子节点
</p>
<p>
  <img loading="lazy" decoding="async" width="750" height="505" src="/wp-content/uploads/2018/05/word-image-2777.png" class="wp-image-3156" srcset="/wp-content/uploads/2018/05/word-image-2777.png 750w, /wp-content/uploads/2018/05/word-image-2777-300x202.png 300w" sizes="(max-width: 750px) 100vw, 750px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="1017" height="308" src="/wp-content/uploads/2018/05/word-image-2778.png" class="wp-image-3157" srcset="/wp-content/uploads/2018/05/word-image-2778.png 1017w, /wp-content/uploads/2018/05/word-image-2778-300x91.png 300w, /wp-content/uploads/2018/05/word-image-2778-768x233.png 768w" sizes="(max-width: 1017px) 100vw, 1017px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="1055" height="288" src="/wp-content/uploads/2018/05/word-image-2779.png" class="wp-image-3158" srcset="/wp-content/uploads/2018/05/word-image-2779.png 1055w, /wp-content/uploads/2018/05/word-image-2779-300x82.png 300w, /wp-content/uploads/2018/05/word-image-2779-768x210.png 768w, /wp-content/uploads/2018/05/word-image-2779-1024x280.png 1024w" sizes="(max-width: 1055px) 100vw, 1055px" />
</p>
<p>
  ②、根据子节点查父节点
</p>
<p>
  <img loading="lazy" decoding="async" width="1096" height="258" src="/wp-content/uploads/2018/05/word-image-2780.png" class="wp-image-3159" srcset="/wp-content/uploads/2018/05/word-image-2780.png 1096w, /wp-content/uploads/2018/05/word-image-2780-300x71.png 300w, /wp-content/uploads/2018/05/word-image-2780-768x181.png 768w, /wp-content/uploads/2018/05/word-image-2780-1024x241.png 1024w" sizes="(max-width: 1096px) 100vw, 1096px" />
</p>
<p>
  ③、查询兄弟节点
</p>
<p>
  <img loading="lazy" decoding="async" width="1075" height="250" src="/wp-content/uploads/2018/05/word-image-2781.png" class="wp-image-3160" srcset="/wp-content/uploads/2018/05/word-image-2781.png 1075w, /wp-content/uploads/2018/05/word-image-2781-300x70.png 300w, /wp-content/uploads/2018/05/word-image-2781-768x179.png 768w, /wp-content/uploads/2018/05/word-image-2781-1024x238.png 1024w" sizes="(max-width: 1075px) 100vw, 1075px" />
</p>
<p>
  3、遗留DOM
</p>
<p>
  早期DOM访问形式，在一些特定元素的获取上比较方便。被保留下来使用，W3C标准化之后 称为“0级DOM”。
</p>
<p>
  document.body			访问body节点
</p>
<p>
  document.forms		    访问所有的表单		返回集合
</p>
<p>
  document.formName[index].name       访问表单项
</p>
<p>
  document.anchors		    访问所有的锚点		返回集合
</p>
<p>
  document.links		    访问所有的链接		返回集合
</p>
<p>
  document.images		    访问所有的图片		返回集合
</p>
<p>
  document.all			    访问所有的元素
</p>
<p>
  <img loading="lazy" decoding="async" width="1158" height="459" src="/wp-content/uploads/2018/05/word-image-2782.png" class="wp-image-3161" srcset="/wp-content/uploads/2018/05/word-image-2782.png 1158w, /wp-content/uploads/2018/05/word-image-2782-300x119.png 300w, /wp-content/uploads/2018/05/word-image-2782-768x304.png 768w, /wp-content/uploads/2018/05/word-image-2782-1024x406.png 1024w" sizes="(max-width: 1158px) 100vw, 1158px" />
</p>
<p>
  5、元素节点增删改操作
</p>
<p>
  1、增加元素节点/创建节点
</p>
<p>
  方法一：父节点.appendChild(子节点)
</p>
<p>
  <img loading="lazy" decoding="async" width="1079" height="443" src="/wp-content/uploads/2018/05/word-image-2783.png" class="wp-image-3162" srcset="/wp-content/uploads/2018/05/word-image-2783.png 1079w, /wp-content/uploads/2018/05/word-image-2783-300x123.png 300w, /wp-content/uploads/2018/05/word-image-2783-768x315.png 768w, /wp-content/uploads/2018/05/word-image-2783-1024x420.png 1024w" sizes="(max-width: 1079px) 100vw, 1079px" />
</p>
<p>
  方法二：父节点.insertBefore(新节点, 参照的节点);
</p>
<p>
  <img loading="lazy" decoding="async" width="1063" height="423" src="/wp-content/uploads/2018/05/word-image-2784.png" class="wp-image-3163" srcset="/wp-content/uploads/2018/05/word-image-2784.png 1063w, /wp-content/uploads/2018/05/word-image-2784-300x119.png 300w, /wp-content/uploads/2018/05/word-image-2784-768x306.png 768w, /wp-content/uploads/2018/05/word-image-2784-1024x407.png 1024w" sizes="(max-width: 1063px) 100vw, 1063px" />
</p>
<p>
  2、修改节点
</p>
<p>
  方法：父节点.replaceChild(新节点, 待替换的节点);
</p>
<p>
  <img loading="lazy" decoding="async" width="1046" height="419" src="/wp-content/uploads/2018/05/word-image-2785.png" class="wp-image-3164" srcset="/wp-content/uploads/2018/05/word-image-2785.png 1046w, /wp-content/uploads/2018/05/word-image-2785-300x120.png 300w, /wp-content/uploads/2018/05/word-image-2785-768x308.png 768w, /wp-content/uploads/2018/05/word-image-2785-1024x410.png 1024w" sizes="(max-width: 1046px) 100vw, 1046px" />
</p>
<p>
  3、删除节点
</p>
<p>
  方法：父节点.removeChild(子节点);
</p>
<p>
  <img loading="lazy" decoding="async" width="944" height="312" src="/wp-content/uploads/2018/05/word-image-2786.png" class="wp-image-3165" srcset="/wp-content/uploads/2018/05/word-image-2786.png 944w, /wp-content/uploads/2018/05/word-image-2786-300x99.png 300w, /wp-content/uploads/2018/05/word-image-2786-768x254.png 768w" sizes="(max-width: 944px) 100vw, 944px" />
</p>
<p>
  6、属性节点操作
</p>
<p>
  1、获取元素的属性
</p>
<p>
  elementNode.attributes         获取元素的所有属性
</p>
<p>
  elementNode.getAttribute()		读取一个属性值
</p>
<p>
  elementNode.属性名          获取元素的属性
</p>
<p>
  <img loading="lazy" decoding="async" width="1098" height="432" src="/wp-content/uploads/2018/05/word-image-2787.png" class="wp-image-3166" srcset="/wp-content/uploads/2018/05/word-image-2787.png 1098w, /wp-content/uploads/2018/05/word-image-2787-300x118.png 300w, /wp-content/uploads/2018/05/word-image-2787-768x302.png 768w, /wp-content/uploads/2018/05/word-image-2787-1024x403.png 1024w" sizes="(max-width: 1098px) 100vw, 1098px" />
</p>
<p>
  2、添加/修改元素的属性
</p>
<p>
  elementNode.setAttribute()		设置（修改/添加）一个属性值
</p>
<p>
  elementNode.属性名 = 值     设置元素的属性
</p>
<p>
  <img loading="lazy" decoding="async" width="932" height="237" src="/wp-content/uploads/2018/05/word-image-2788.png" class="wp-image-3167" srcset="/wp-content/uploads/2018/05/word-image-2788.png 932w, /wp-content/uploads/2018/05/word-image-2788-300x76.png 300w, /wp-content/uploads/2018/05/word-image-2788-768x195.png 768w" sizes="(max-width: 932px) 100vw, 932px" />
</p>
<p>
  3、删除元素的属性
</p>
<p>
  elementNode.removeAttribute()	删除一个属性
</p>
<p>
  4、判断元素是否有哪个属性
</p>
<p>
  elementNode.hasAttribute()		检测是否有某个属性，有返回true，没有返回false
</p>
<p>
  <img loading="lazy" decoding="async" width="959" height="224" src="/wp-content/uploads/2018/05/word-image-2789.png" class="wp-image-3168" srcset="/wp-content/uploads/2018/05/word-image-2789.png 959w, /wp-content/uploads/2018/05/word-image-2789-300x70.png 300w, /wp-content/uploads/2018/05/word-image-2789-768x179.png 768w" sizes="(max-width: 959px) 100vw, 959px" />
</p>
<p>
  5、案例&#8212;全选，反选，取消
</p>
<p>
  代码见19全选反选取消.html
</p>
<p>
  7、操作css样式
</p>
<p>
  1、设置css样式：
</p>
<p>
  语法： node<strong>.</strong>style<strong>.</strong>css样式 = 值
</p>
<p>
  不带中横线的css：node.style.样式 = 值。比如有color，border，width
</p>
<p>
  带中横线的，样式要去掉中横线，后面的首字母大写，backgroundColor、fontSize、lineHeight
</p>
<p>
  <img loading="lazy" decoding="async" width="705" height="465" src="/wp-content/uploads/2018/05/word-image-2790.png" class="wp-image-3169" srcset="/wp-content/uploads/2018/05/word-image-2790.png 705w, /wp-content/uploads/2018/05/word-image-2790-300x198.png 300w" sizes="(max-width: 705px) 100vw, 705px" />
</p>
<p>
  2、获取css样式
</p>
<p>
  使用node.style.样式的方式只能获取行内样式和js已经设置过的样式。
</p>
<p>
  在IE8及更低版本浏览器中支持node.currentStyle.样式
</p>
<p>
  高版本浏览器支持getComputedStyle(node).样式
</p>
<p>
  <img loading="lazy" decoding="async" width="967" height="177" src="/wp-content/uploads/2018/05/word-image-2791.png" class="wp-image-3170" srcset="/wp-content/uploads/2018/05/word-image-2791.png 967w, /wp-content/uploads/2018/05/word-image-2791-300x55.png 300w, /wp-content/uploads/2018/05/word-image-2791-768x141.png 768w" sizes="(max-width: 967px) 100vw, 967px" />
</p>
<p>
  兼容的性的写法：
</p>
<p>
  <img loading="lazy" decoding="async" width="806" height="228" src="/wp-content/uploads/2018/05/word-image-2792.png" class="wp-image-3171" srcset="/wp-content/uploads/2018/05/word-image-2792.png 806w, /wp-content/uploads/2018/05/word-image-2792-300x85.png 300w, /wp-content/uploads/2018/05/word-image-2792-768x217.png 768w" sizes="(max-width: 806px) 100vw, 806px" />
</p>
<p>
  8、DOM属性
</p>
<p>
  DOM有四个属性，分别是：
</p>
<p><strong>innerHTML</strong>
</p>
<p>
  	获取/设置元素里的html内容
</p>
<p>
  <img loading="lazy" decoding="async" width="1275" height="264" src="/wp-content/uploads/2018/05/word-image-2793.png" class="wp-image-3172" srcset="/wp-content/uploads/2018/05/word-image-2793.png 1275w, /wp-content/uploads/2018/05/word-image-2793-300x62.png 300w, /wp-content/uploads/2018/05/word-image-2793-768x159.png 768w, /wp-content/uploads/2018/05/word-image-2793-1024x212.png 1024w" sizes="(max-width: 1275px) 100vw, 1275px" />
</p>
<p><strong>nodeName</strong>
</p>
<p>
  	nodeName 是只读的
</p>
<p>
  元素节点的 nodeName 与标签名相同
</p>
<p>
  属性节点的 nodeName 与属性名相同
</p>
<p>
  文本节点的 nodeName 始终是 #text
</p>
<p>
  文档节点的 nodeName 始终是 #document
</p>
<p><strong>nodeValue</strong>
</p>
<p>
  	元素节点的 nodeValue 是 undefined 或 null
</p>
<p>
  文本节点的 nodeValue 是文本本身
</p>
<p>
  属性节点的 nodeValue 是属性值
</p>
<p>
  <img loading="lazy" decoding="async" width="847" height="152" src="/wp-content/uploads/2018/05/word-image-2794.png" class="wp-image-3173" srcset="/wp-content/uploads/2018/05/word-image-2794.png 847w, /wp-content/uploads/2018/05/word-image-2794-300x54.png 300w, /wp-content/uploads/2018/05/word-image-2794-768x138.png 768w" sizes="(max-width: 847px) 100vw, 847px" />
</p>
<p><strong>nodeType</strong>
</p>
<p>
  表示节点的类型
</p>
<p>
  	元素 1
</p>
<p>
  属性 2
</p>
<p>
  文本 3
</p>
<p>
  注释 8
</p>
<p>
  文档 9
</p>
<p>
  <img loading="lazy" decoding="async" width="1211" height="400" src="/wp-content/uploads/2018/05/word-image-2795.png" class="wp-image-3174" srcset="/wp-content/uploads/2018/05/word-image-2795.png 1211w, /wp-content/uploads/2018/05/word-image-2795-300x99.png 300w, /wp-content/uploads/2018/05/word-image-2795-768x254.png 768w, /wp-content/uploads/2018/05/word-image-2795-1024x338.png 1024w" sizes="(max-width: 1211px) 100vw, 1211px" />
</p>
<p>
  案例：完成兼容性的查找子节点的方法，及查找上一个兄弟的方法，及查找下一个兄弟的方法
</p>
<p>
  获取子元素的兼容性写法：
</p>
<p>
  <img loading="lazy" decoding="async" width="738" height="502" src="/wp-content/uploads/2018/05/word-image-2796.png" class="wp-image-3175" srcset="/wp-content/uploads/2018/05/word-image-2796.png 738w, /wp-content/uploads/2018/05/word-image-2796-300x204.png 300w, /wp-content/uploads/2018/05/word-image-2796-220x150.png 220w" sizes="(max-width: 738px) 100vw, 738px" />
</p>
<p>
  获取上一个兄弟的兼容性写法：
</p>
<p>
  <img loading="lazy" decoding="async" width="716" height="380" src="/wp-content/uploads/2018/05/word-image-2797.png" class="wp-image-3176" srcset="/wp-content/uploads/2018/05/word-image-2797.png 716w, /wp-content/uploads/2018/05/word-image-2797-300x159.png 300w" sizes="(max-width: 716px) 100vw, 716px" />
</p>
<p>
  获取下一个兄弟的兼容性写法：
</p>
<p>
  <img loading="lazy" decoding="async" width="757" height="353" src="/wp-content/uploads/2018/05/word-image-2798.png" class="wp-image-3177" srcset="/wp-content/uploads/2018/05/word-image-2798.png 757w, /wp-content/uploads/2018/05/word-image-2798-300x140.png 300w" sizes="(max-width: 757px) 100vw, 757px" />
</p>
<p>
  9、获取元素的位置
</p>
<p>
  offsetLeft	  元素在网页中水平坐标值	ele.offsetLeft
</p>
<p>
  offsetTop	  元素在网页中垂直坐标值	ele.offsetTop
</p>
<p>
  offsetWidth	元素在页面中占据的宽度	ele.offsetWidth
</p>
<p>
  offsetHeight	元素在页面中占据的高度	ele. offsetHeight
</p>
<p>
  HTML+css：
</p>
<p>
  <img loading="lazy" decoding="async" width="639" height="424" src="/wp-content/uploads/2018/05/word-image-2799.png" class="wp-image-3178" srcset="/wp-content/uploads/2018/05/word-image-2799.png 639w, /wp-content/uploads/2018/05/word-image-2799-300x199.png 300w" sizes="(max-width: 639px) 100vw, 639px" />
</p>
<p>
  js及输出结果：
</p>
<p>
  <img loading="lazy" decoding="async" width="1256" height="251" src="/wp-content/uploads/2018/05/word-image-2800.png" class="wp-image-3179" srcset="/wp-content/uploads/2018/05/word-image-2800.png 1256w, /wp-content/uploads/2018/05/word-image-2800-300x60.png 300w, /wp-content/uploads/2018/05/word-image-2800-768x153.png 768w, /wp-content/uploads/2018/05/word-image-2800-1024x205.png 1024w" sizes="(max-width: 1256px) 100vw, 1256px" />
</p>
<p>
  scrollLeft	  滚动条在容器中水平滚动的距离	ele.scrollLeft
</p>
<p>
  scrollTop	  滚动条在容器中垂直滚动的距离	ele.scrollTop
</p>
<p>
  测试的时候，先将页面设置的大一点，能看到滚动条：
</p>
<p>
  <img loading="lazy" decoding="async" width="566" height="31" src="/wp-content/uploads/2018/05/word-image-2801.png" class="wp-image-3180" srcset="/wp-content/uploads/2018/05/word-image-2801.png 566w, /wp-content/uploads/2018/05/word-image-2801-300x16.png 300w" sizes="(max-width: 566px) 100vw, 566px" />
</p>
<p>
  当滚动条滚动的时候，输出滚动的距离：
</p>
<p>
  <img loading="lazy" decoding="async" width="858" height="132" src="/wp-content/uploads/2018/05/word-image-2802.png" class="wp-image-3181" srcset="/wp-content/uploads/2018/05/word-image-2802.png 858w, /wp-content/uploads/2018/05/word-image-2802-300x46.png 300w, /wp-content/uploads/2018/05/word-image-2802-768x118.png 768w" sizes="(max-width: 858px) 100vw, 858px" /></p>
]]></content:encoded>
					
					<wfw:commentRss>/%e5%89%8d%e7%ab%af%e6%8a%80%e6%9c%af/3136.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
