[TOC]
### 基本概念
1、文档:一个网页可以称为文档
2、节点:网页中的所有内容都是节点(标签、属性、文本、注释等)
3、元素:网页中的标签
4、属性:标签的属性
*****
### 事件三要素
1、事件源: 被触发的对象
2、事件: 用户的操作、例如:鼠标点击,鼠标经过,鼠标离开
3、事件处理程序: 事件触发后要执行的代码(函数形式)
*****
### 获取元素的方法(6种)
#### **a.根据id获取,返回的是id**
```
<input value = "我是input框" id = "btn">
var btn=document.getElementById(“btn”);
```
#### **b.根据标签名获取元素,返回值是集合(伪数组) 动态获取**
```
<p>哈哈,我又变帅了</p>
<p>哈哈,我又变帅了</p>
<p>哈哈,我又变帅了</p>
<p>哈哈,我又变帅了</p>
<p>哈哈,我又变帅了</p>
var pObjs = document.getElementsByTagName("p");/*数组*/
```
#### **c.根据name名获取元素。**
返回值是集合(伪数组)
(于input框中使用)
```
<input type="button" value="显示效果" id="btn"><br />
<input type="text" value="您好" name="name1"/><br/>
<input type="text" value="您好" name="name2"/><br/>
<input type="text" value="您好" name="name1"/><br/>
<input type="text" value="您好" name="name3"/><br/>
<input type="text" value="您好" name="name1"/><br/>
<input type="text" value="您好" name="name1"/><br/>
<script>
var inputs = document.getElementsName("name1");/*数组*/
</script>
```
#### **d.根据类名获取元素**
获取所有带有cls类的元素
```
<p class="cls">这是另一个p</p>
<span class="cls">这是第一个span</span><br/>
<span>这是第二个span</span><br/>
<div class="cls">这是第一个div</div>
<div>这是第二个div</div>
<script >
var objs = document.getElementsByClassName("cls");
</script>
```
#### **e.根据id获取 **
返回值是id本身
```
<input type="button" value="显示效果" id="btn"/>
var btnObj = document.querySelector("#btn");
```
**注意 记得加上#**
#### **f.根据类名获取元素**
**注意:要加 . ** 返回值是个数组
```
<p class="cls">这是一个p</p>
<span>这是一个span</span>
<span class="cls">这是一个span</span>
var objs = document.querySelectorAll(".cls");//是个伪数组
```
附:
获取body元素的方法:document.body
###用户常见的事件
点击事件(onclick) 鼠标经过(onmouseover) 鼠标离开(onmouseout)
焦点事件(onfocus) 失去焦点事件(onblur)
####innerText和innerHTML的区别
```
<style>
div{
width: 300px;
height: 200px;
border: 2px dotted red;
}
</style>
<input type="button" value="显示效果" id="btn"/>
<input type="button" value="显示效果获取" id="btn2"/>
<div id="dv">
这是div
<p>这是一个p</p>
</div>
<script>
my$("btn").onclick=function () {
//my$("dv").innerText="哈哈";//设置文本
//my$("dv").innerText="<p>这是一个p</p>";//设置html标签的代码
//my$("dv").innerHTML="哈哈";
//my$("dv").innerHTML="<p>这是一个p</p>";//设置Html标签的
};
//获取
my$("btn2").onclick=function () {
//可以获取标签中的文本内容
//console.log(my$("dv").innerText);
console.log(my$("dv").innerHTML);
};
</script>
```
**总结**
若直接设置纯文本 innerText 和 innerHTML是一样的,不过在带标签的情况下,innerText会把标签当成字符串,而innerHTML则不会
若设置的内容里面有标签,推荐使用innerHTML
若设置的是纯文本,不带标签的推荐使用innerText
**不管是设置还是获取,只要想获取纯文本内容使用innerText,如果想要文本和标签使用innerHTML**
### 自定义属性 getAttribute()、setAttribute()、removeAttribute()
操作的是标签的行内属性,不存在浏览器兼容性问题,称为标准方法。
* getAttribute() 获取标签行内属性
* setAttribute() 设置标签行内属性
* removeAttribute() 移除标签行内属性
*
设置自定义属性:setAttribute("属性的名字","属性的值")
获取自定义属性:getAttribute("属性的名字")
移除属性:removeAttribute("属性的名字")
```
<style>
ul{
list-style: none;
cursor: pointer;
}
</style>
<ul id="uu">
<li>小明的成绩</li>
<li>小丽的成绩</li>
<li>小花的成绩</li>
<li>小李的成绩</li>
<li>乔峰的成绩</li>
</ul>
<script src="publick.js"></script>
var list = my$("uu").getElementsByTagName("li");
//循环遍历
for(var i = 0; i < list.length; i++){
//先为每个li添加自定义属性
list[i].setAttribute("score",(i+1)*10);
//点击每个li标签,显示对应的自定义属性值
list[i].onclick = function () {
alert(this.getAttribute("score"));
}
}
```
**移除属性 的例子**
```
<style>
div{
width: 200px;
height: 100px;
background-color: pink;
}
.cls{
background-color: green;
}
</style>
<input type="button" value="移除自定义属性" id="btn">
<div id="dv" score="10" class="cls"></div>
<script src="publick.js"></script>
<script>
//点击按钮移除元素的自定义属性
my$("btn").onclick = function () {
my$("dv").removeAttribute("score");//审查元素能看到这个score自定义属性没有了
//也可以移除元素的自带的属性
my$("dv").removeAttribute("class");
}
</script>
```
- Javascript
- 组成
- Web API
- 初步认识DOM
- 经典案例 (使用获取id的方法)
- 节点和元素
- 经典案例 (使用获取节点和元素的方法)
- 函数
- 作用域链
- Array对象的方法
- String对象的方法
- 绑定事件
- 事件委托
- 逻辑运算
- js高级(面向对象、)
- 基本知识
- 数据类型
- 基本包装类型的使用
- 定义变量的区别
- JavaScript对象的动态特性
- 关键字in
- 关键字delete
- 运算符
- 创建对象的方式
- 回调函数
- 高阶函数
- 构造器属性
- this指向
- hasOwnProperty属性
- 私有成员和特权方法
- 面向对象和面向过程的基础
- 异常捕获
- 构造函数和普通函数的区别
- 构造函数的补充
- 原型
- 原型图
- 获取原型对象的方法
- 原型对象的访问和设置
- 判断某个对象是否是指定实例对象的原型对象
- constructor
- isPrototypeOf
- instanceof
- 检测对象是公有还是私有
- 核心概念
- 继承
- 混入式继承
- 原型式继承
- 原型链继承
- 借用构造函数继承(call继承,经典继承)
- 组合式继承(推荐)
- class继承
- __ proto __属性
- call方法和apply方法
- Fuction相关知识
- 创建函数的方式
- eval函数
- 浅拷贝和深拷贝
- 浅拷贝
- 深拷贝
- Object相关知识
- Object原型属性和方法
- Object静态成员对象
- 案例
- 数组去重
- 闭包
- 语法
- DOM事件和闭包
- 定时器和闭包
- 即使对象初始化
- 闭包的变形
- 设计模式
- 单例模式
- 发布订阅模式(观察者模式)
- 工厂模式
- 命名空间模式
- 同步和异步
- 垃圾回收机制
- get和set
- JQuery
- 动画方法
- 事件
- 方法
- 节点
- 方法er
- HTML + CSS
- 经验
- flex布局
- px,em ,rem区别
- 清除浮动
- Less
- UI框架
- 一.Bootstrap框架
- 常用类名
- 二 .Animate.css
- 三.WOW.JS
- 四.scrollReveal.js
- 五.zepto框架
- zepto选择器
- 滑动事件
- tap触摸事件
- zepto动画
- 六,swipe框架
- 分页器
- 左右按钮和循环轮播
- 底部滚动和轮播方向
- 自动播放和切换效果
- 移入移除事件
- swipe结合animate.css
- 总结
- 滚滚屏
- 自动化构建工具
- 1.gulp
- 使用gulp编译less成css,并最终压缩css
- 压缩css
- 合并和压缩js
- 压缩图片
- 编写server服务
- 包管理器
- 介绍
- brew
- npm十全大补汤
- ES6
- class类
- class类的使用
- class类的继承结构
- let 和const
- 结构语法
- 模板字符串
- 化简写法
- 形参的默认值
- ...rest参数
- rest剩余参数
- 扩展参数
- 正则表达式
- 创建正则表达式的方式
- 构造函数
- 字面量的方式
- 其他(修饰符)
- 判断是否匹配成功
- 正则表达式案例
- 常见的匹配原则
- 验证密码长度
- 表单验证
- 正则提取
- 正则替换
- vue
- 插值操作
- Mustache语法
- 过滤器
- 绑定相关知识
- 绑定对象
- 单向绑定
- 双向绑定
- 绑定属性
- 动态绑定style
- 绑定事件
- 补充
- 绑定语法
- 基础
- vue介绍
- MVVM
- 计算属性
- 指令
- v-cloak
- 显示和隐藏
- 循环
- 自定义指令
- 本地缓存
- localStorage
- sessionStorage
- 对象劫持
- 组件
- 局部组件
- 父子组件
- 全局组件
- 组件访问实例数据
- 父传子
- 子传父
- 兄弟传兄弟
- 插槽
- methods,computed,watch的区别
- Vue.observable()
- vue.config.js配置
- 修饰符
- .sync修饰符
- $attrs和$listeners
- Node.js
- 使用Node执行js代码的两种方式
- 交互模式
- 解释js文件
- http模板
- request对象的使用
- express框架
- 安装
- post
- 获取请求参数
- post返回页面
- 重定向到别的接口
- get
- 返回页面
- get获取请求参数
- 请求静态资源
- 热重启
- Ajax
- 请求方式
- get请求
- post请求
- jQuery中的ajax方法
- JQuery中的get请求
- jQuery中的post请求
- 微信小程序
- 认识
- 引入样式的方式
- 绑定数据
- 小程序组件
- scroll - view 可滚动视图区域
- 发起请求
- template模板
- rich-text
- web-view
- open-data
- checkbox组件
- label组件
- radio组件
- picker组件
- swiper组件
- Git
- 跨域
- 左侧固定,右侧自适应
- vuex
- 如何解决vuex页面刷新数据丢失问题
- 数据结构
- 树
- 问题累积
- Axios
- 前端路由