[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
- 前端路由