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 ...
随机推荐
- iOS逆向必备绝技之ipa重签名
一.重签名准备工作: 找到开发者证书和配置文件: 列出所有开发者证书文件: security find-identity -p codesigning -v 找一个开发环境配置文件生成entitlem ...
- Wordpress 安装或切换不同的版本
如果升级到最新版本的 Wordpress 后,发现有 bug,需要回滚回上一个相对稳定的版本,可以按照如下步骤: 一.到官网下载压缩包 https://wordpress.org/download/r ...
- Deploy a plain HTTP registry
当docker pull a.b.com/ubuntu:14.04的时候,如果提示:“Docker x509 insecure registry”之类的,说这个registry不安全的,如果就是想在a ...
- Flutter入门(一)
Flutter的sdk地址https://flutter.dev/docs/development/tools/sdk/releases 如果网络不能翻墙,只需要在环境变量里增加如下 FLUTTER_ ...
- CentOS7使用yum安装redis
#下载fedora的epel仓库yum install epel-release #安装redis数据库yum install redis # 启动Redisservice redis start # ...
- python-mysql事务
MySQL 事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.简单的理解就是:完成一件事情的多个mysql语句的集合就是一个事务了,可能有人会想,我的mysql本来就是一句一句语句执行的啊, ...
- ThinkPHP3验证码、文件上传、缩略图、分页(自定义工具类、session和cookie)
验证码 TP框架中自带了验证码类 位置:Think/verify.class.php 在LoginController控制器中创建生存验证码的方法 login.html登陆模板中 在LoginCont ...
- 在ensp上的动态NAT的配置
原理 实验模拟 搭建实验拓扑 相关参数 配置静态NAT ,一对一映射 首先设置静态路由,使路由器能够访问 我们ping一下抓一下包 发现我们出去的包已经封装成为了另外一个ip 配置动态NAT ,一对一 ...
- sizeof(类名字)
析构函数,跟构造函数这些成员函数,是跟sizeof无关的,因为我们的sizeof是针对实例,而普通成员函数,是针对类体的,一个类的成员函数,多个实例也共用相同的函数指针,所以自然不能归为实例的大小. ...
- jiaba