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 ...
随机推荐
- 微信小程序:用 Promise 解决方案代替回调地狱。 修复 this._invokeMethod is not a function 的问题
/** * 将回调地狱转换为 Promise 形式 * https://blog.csdn.net/SEAYEHIN/article/details/88663740 * raw: wx.downlo ...
- SwiftUI or Flutter ?
看到这篇好文,忍不住想分享一下 本文转自https://juejin.im/post/5d05b45bf265da1bcc193ff4 版权归原文所有 ------------------------ ...
- Windows删除空文件夹问题带来的学习与思考
https://blog.csdn.net/XavierDarkness/article/details/84785482 1.问题产生: 前段时间得到一份资源,号称有近500个G的学习资料,花了 ...
- EasyNVR摄像机网页无插件直播方案H5前端构建之:bootstrap弹窗功能的实现方案与代码
前言介绍 在web前端的网页设计中,为了展示出简洁的网页风格和美观的效果,往往会使用弹窗效果在EasyNVR前端页面录像检索功能时,必然会播放录像,如果单独为播放录像文件排一个界面,用户在使用上会更加 ...
- [UE4] TSharedPtr, TWeakObjectPtr and TUniquePtr
转自:https://dawnarc.com/2018/07/ue4-tsharedptr-tweakobjectptr-and-tuniqueptr/ UE4 的 TSharedPtr.TWeakO ...
- centos7 替换为 aliyun 源
1.打开centos的yum文件夹 输入命令cd /etc/yum.repos.d/ 2.用wget下载repo文件 输入命令wget http://mirrors.aliyun.com/repo ...
- ThinkPHP3开发模式,控制器操作,配置文件,框架语法
ThinkPHP的开发模式 tp框架有两种使用模式:开发模式(调试模式),一种是生产模式(运行模式) define('APP_DEBUG', true); //调试模式 define('APP_DE ...
- vim设定Tab缩进长度
在Linux系统中,vim是一款非常好用的文本编辑器,那么,如何在Linux下的vim编辑器设定Tab的缩进长度呢? Linux系统下,vim编辑器Tab键的默认长度为8个空格,在vim中可以通过修改 ...
- mybatis一级二级缓存
一级缓存分析 不需要任何配置 ,mybatis本身带有 一级缓存是SqlSession范围的缓存,当调用SqlSession的修改,添加,删除,commit(),close()等方法时,就会清空一级缓 ...
- 常见GC算法,CMS以及G1的垃圾回收过程,CMS的各个阶段哪两个是Stop the world的,CMS会不会产生碎片,G1的优势。
常见GC算法 在C/C++中是由程序员自己去申请.管理和释放内存的,因此没有GC的概念.而在Java中,专门有一个用于垃圾回收的后台线程来进行监控.扫描,自动将一些无用的内存进行释放.下面介绍几种常见 ...