JavaScript学习笔记(6月份)
由于笔记比较杂,本身学习程度并不理想,所以暂时没有整理这些繁杂的笔记。
ps:博客园markdown用起来和看起来都舒服太多了,这才是我了解的那个markdown,又回来了!
笔记
DOM对象 document object model
DOM 中节点种类一共有三种
注:在JS中所有的节点都是对象
<div title="属性节点">文本内容</div>
<div></div> => 元素节点
title => 属性节点
文本内容 => 文本节点
查找元素节点方法
document.getElementById(id);//通过当前元素节点的id,获取对应元素节点
元素节点对象:
通过这个节点对象(note),访问它的一系列属性,以下就是对象名称:- note.tagname 获取元素节点的标签名
 - note.innerHTML 获取元素节点标签间的内容
 - note.id
 - note.className
 - note.title
 - note.style等
 
HTML属性的属性(对应元素节点的对象):
id
title
style
innerHTML
className
元素节点.属性
元素节点[属性]
    document.getElementsByTagName()
    node.getElementsByTagName();
从node节点开始,找出符合的标签节点
参数:标签名;
功能:获取当前页面上所有符合改标签的元素节点
返回值:一个装有符合条件的元素节点的数组document.getElementsByName(); 只能从document调用 ps:许多的name可以一样
参数:name的值
返回值:装有符合条件的元素节点的数组document.getElementsByClassName() ps:可以从某一个元素节点去查找
参数:class
返回值:所有符合条件的元素节点组合的数组。
在第版本的ie浏览器中是不支持的 处理办法
获取父节点的所有元素,然后进行一一判断,符合className等于参数class就可以加入数组中。
封装函数·setAttribute·childNotes·Attributes·parentNode
- id document.getElementById()
 - class document.getElementsByClassName();
 - name document.getElementsByName();
 - tagName note.getElementsByTagName();
 
通过封装函数,简化上述操作。
css选择器
- #id //通过id获取元素节点
 - .class //通过className获取元素节点
 - tagName //通过tagName获取元素节点
 - name=xxx //通过name获取元素节点
 
详情看$()方法 //通过封装css选择器的方法,来快速的获取对应的标签
作用:操作当前元素的某一个属性的
get/setAttribute() 获取元素属性的两种方法
removeAttribute()
- 和点出来的class属性范围区别:点操作是通过元素节点点出className参数,
而set/get是通过传入class参数来获取 例如:Obtn.className == Obtn.getAttribute("class") - 用户自定义属性的支持。自定义xxx="yyyy" 
Obtn.setAttribute("xxx","yyy")document.getElementsById("btn").getAttribute("id") 
childNotes(); 获取当前节点的所有子节点,包括三种节点类型 nodeName,nodeType,nodeValue
DOM节点类型
元素节点 属性节点 文本节点
作用:
(1)删除子节点中的空白节点
方法:使用正则表达式进行删除。/^\s+$/.test() 判断是否value为空
删除空白节点的时候必须是倒序删除,原因自己想,想不到撞死,提示:他是一个数组类型
(2)不知道
ownerDocument 结果一般是document
parentNode 父亲节点 previousSibling 同级别的上一个节点 nextSibling 同级别的下一个元素节点
attributes 返回该节点的属性节点,[集合]
集合特点:1.不重复;2.无序
其中一种访问方法:node.attributes.getNamedItem("id");
dom创建带文本的元素节点
- document.write() //写入
 - document.createElement("div") 插入标签
 - note.appendChild()
 - parent.replaceChild(newNode,oldNode)
 - note.cloneNode() 参数:true则将文本内容传入,否则默认只克隆标签
ps:系统没有提供同时插入文本和标签的方法 
	var note = document.createElement("span")
	var Ntext = document.createTextNode("文本内容") 插入文本内容
	note.appendChild(Ntext)
	odiv.appendChild(note)
事件
1. 事件基础
访问web界面的用户引起的一系列操作
鼠标事件,键盘事件,HTML事件
函数:on+事件名称
2. 事件流
事件:捕获,目标,冒泡
阻止冒泡:
	evt.cancelBubble = true //对主流浏览器和ie生效
	evt.stopPropagation() //只对主流浏览器生效
事件委托:利用事件冒泡原理,把本应添加在元素上的事件委托给他的父级(外层)
多个重复的事件,可以把这个事件委托到父级来实现。更加简洁
阻止默认事件
比如<a></a>href跳转标签
- onclick 方法里面,return false
 - evt.preventDefault();
 - evt.returnValue = false;
 
3. DOM2级事件
DOM2级事件处理程序
添加事件监听器:addEventListener(事件名,处理函数,布尔值)
移除事件监听器:removeEventListener(事件名,处理函数)
IE下的事件监听器:attachEvent(事件名,处理函数) detachEvent(事件名,处理函数)
ps:普通事件中点击事件会被后一个点击事件给覆盖,而二级事件不会被其他事件所覆盖。可以重复添加
布尔值为false的时候,为正常的冒泡事件,true为捕获(从外往内)
cookie
- http协议
 - cookie的概念
 - cookie的基本操作
 - cookie的封装
 
http:超文本传输协议,用于从web服务器传输超文本到本地浏览器的传输协议,是一个无状态的协议
cookie:缓存存在本地浏览器中的数据,包括增删改查的四个部分
document.cookie = "userName=paikle";
//这种方式添加的cookie会随着浏览器的关闭而消失,要设置时间限制的cookie需要在后面添加date限制
设置时间来让cookie过期,从而达到删除的效果。
var oDate = new Date(); //创建时间
oDate.setDate(oDate.getDate()+3) //将时间设置为三天之后
document.cookie = "user = paikle;expires="+oDate; //将cookie过期时间设置为三天后
cookie的封装
setcookie(name,value,day) //设置cookie
getcookie() //获取cookie
removecookie() //移除cookie
正则表达式
正则表达式是由普通字符和特殊字符组成的对字符串进行过滤的逻辑公式
修饰符 g i
g 表示会全部搜索,返回符合的数字,i 表示忽略大小写
 var reg = /abc/g;
 var str = 'abcabc';
1.test方法
正则表达式方法,检测字符串是否又符合规则的字串,有返回true,无为false
//两种构造方法
var rge = /abc/;
var reg = new RegExp("abc");
var str = "ab";
var flag = reg.test(str)
2.match方法 字符串方法
console.log(str.match(reg))
3.search方法 字符串的方法 用于查找符合规则的字串的位置,只返回第一个匹配的位置
var rg = /bc/
console.log(str.search(rg))
4.split方法
5.replace方法
var tmd = /tmd/gi
var str = "abc tmd tmd TMd sabi";
console.log(str.replace(tmd,"*"));
6.exec 正则表达式的方法 将匹配成功的内容放到数组内,没有匹配成功返回null
和match差不多的用法,不过在配置全局匹配的时候不能一次出来
| 符号 | 效果 | 
|---|---|
| . | 除了换行符之外的所有单个字符 | 
| var rag = /g..gle/gi;var str = 'googlegole';console.log(rag.test(str)) | |
| * | 重复多次匹配,匹配任意次数 不管中间多少次(0-n) | 
| + | 至少有一次重复匹配 | 
| ? | 进行0或者1次匹配 | 
| [] | 一个字母表示可出现的范围,[0-9] [a-z] | 
| \w | 数组字母下划线等同于[0-9a-zA-Z_] | 
| \W | 非数字字母下划线 | 
| \d | 数字0-9 | 
| \D | 非数字 | 
| \s | 匹配空格 \S 非空格 | 
| {m,n} | 至少匹配m次,至多匹配n次 | 
| /^开头.*结尾&/ | |
| | | 或 /a | 
| () | 分组 将内容作为一个整体去匹配 | 
ES6
- let的使用
 - 解构赋值
 - 模板字符串
 - 箭头函数
 - set结构和map结构
 - 生成器函数
 - 类class
 
1.let的使用
用来声明变量。用法类似于var ,但是所声明的变量,只在let命令所在的代码块有效。
存在块级作用域 {}
不存在声明提升
不允许重复声明(包括普通变量和函数参数)
const使用 用来声明常量,不要试图改变常量的值,其他语法参照let
2.解构赋值
	//默认赋值
	let [a,b,c] = [1,2,3]
	[a,b=2] = [3] // a = 3,b = 2
	let c ; //undifined;
	[a=1] = [c] //a = 1
	//对象
	let {a,b} = {a:'100',b:'200'} // a = 100 , b = 200
	let {a:b} = {a:111} // b = 111;
	let {a,b = 4} = {a:1} //a = 1;b = 4
3.箭头函数
- 只有一个表达式
 - 含有多条语句
 - this的指向问题
在箭头函数内的this指向定义时的作用域,而不是执行时的作用域。 
var name = "作用域1"
	var obj = {
		'name':'jonson',
		'syHello':()=>{
			this.name;//this指向定义的作用域,则返回:作用域1
		}
	}
//ps
var obj = {
	'name':"joson",
	"syHello":function(){
		this.name;//joson
	}
}
3.set结构 & map结构
set
set的值是不能重复的,相当于集合
var set = new Set([1,3,2,2,34,1,3])
var arr = [...set]  扩展运算符,将类数组对象转换以逗号分割的序列,set转换为数组的方式
arr 为数组形式
使用for of 遍历set or 数组
for(let et of set){ //et直接代表元素
	console.log(et)
}
set.size 长度 set.add() 添加一个 set.delete() 删除某一个 set.has() 是否包含某一个 set.clear() 清空
keys() 返回键名
values() 返回键值
entries() 返回键值对
forEach()
map
let map = new Map([['name':'john'],['age':'30']])
map.set(key,value) 添加元素
map.set(key,value) map.get(key) map.delete() map.has(key) map.clear();
keys() 返回键名
values() 返回键值
entries() 返回键值对
forEach() map.forEarch((value,key) => console.log(value*2))
4.生成器函数
5.class
	class Person{
		constructor(name){
			this.name = name;
		}
	}
JS动画 (7.1记)
JavaScript学习笔记(6月份)的更多相关文章
- JavaScript学习笔记[0]
		
JavaScript学习笔记[0] 使用的是廖雪峰JavaScript教程. 数据类型 Number 表示数字,不区分浮点整形. === 比较时不转化数据类型. == 反之. NaN与任何值都不想等, ...
 - Java程序猿的JavaScript学习笔记(汇总文件夹)
		
最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...
 - Java程序猿的JavaScript学习笔记(8——jQuery选择器)
		
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
 - Java程序猿JavaScript学习笔记(2——复制和继承财产)
		
计划和完成在这个例子中,音符的以下序列: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaSc ...
 - Java程序猿的JavaScript学习笔记(3——this/call/apply)
		
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
 - Java程序猿JavaScript学习笔记(4——关闭/getter/setter)
		
计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...
 - Java程序猿JavaScript学习笔记(14——扩大jQuery UI)
		
计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...
 - javascript学习笔记(四) Number 数字类型
		
数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数 toExponential() 方法 用科学 ...
 - JavaScript学习笔记之数组(二)
		
JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...
 
随机推荐
- Presto: SQL on Everything
			
Presto是FB开源出来的实时分析引擎,可以federated的从多种数据源去读取数据,做联合查询,支持实时Interactive BI或bath ETL的需求 从其问题域来看,基本是和spark是 ...
 - python gis库
			
apt install python3 python3-gdal gdal-bin python3-pyproj proj-bin python3-shapely fiona python3-fion ...
 - C#中得到每周,每月,每季,每年的年初末日期
			
DateTime表示时间上的一刻,通常以日期和当天的时间表示.借用这个结构,我们可以实现较丰富的功能,本文给出得到每周每天的方法,及得到本月第一天,本月最后一天,本季第一天,本季最后一天,本年第一天及 ...
 - android studio 创建项目的一些配置
			
build.gradle文件 apply plugin: 'com.android.application' apply plugin: 'org.greenrobot.greendao' // 使用 ...
 - 如何单独编译Linux内核源码中的驱动为可加载模块?
			
答: 分为两步: 1. 配置某个驱动为模块(如: CONFIG_RTC_XXX=m) 2. 指定路径并编译, 如编译drivers/rtc中的驱动 make SUBDIRS=drivers/rtc m ...
 - MYSQL定时任务-定时清除备份数据
			
背景 由于项目需要,每个月的历史存量数据需要进行一个归档和备份操作,以及一些日志表需要进行一个明细字段清除,让mysql数据库磁盘节省空间.则需要一些定时任务来定时清理这些数据. 技术选型 Java ...
 - java只允许输入数字字母下划线中文
			
public static void main(String[] args) { Pattern pattern = Pattern.compile("[_0-9a-z]+"); ...
 - return  &  exit . in GO
			
return结束当前函数,并返回指定值runtime.Goexit结束当前goroutine,其他的goroutine不受影响,主程序也一样继续运行os.Exit会结束当前程序,不管你三七二十一
 - mysql 得到指定时间段的日期
			
set @startDate='2019-01-01'; set @endDate='2019-04-01'; DAY) AS DAY FROM ( SELECT a.a ) AS a ) AS b ...
 - 硬盘分区及Linux文件系统
			
1. 硬盘物理结构 硬盘物理上主要分为: 盘片 磁道 扇区 机械臂 磁头 主轴 磁道: 当硬盘盘片旋转时,磁头若固定在一个位置上,则磁头会在盘片表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道.以盘片中心 ...