[TOC]
### 使得所有的P標簽背景色在點擊按鈕后改變
```
~~~
<style>
div{
width: 300px;
height: 500px;
border: 1px solid red;
}
</style>
~~~
~~~
<input type="button" value="變色" id="btn"/>
<div id="dv">
<span>這是span</span>
<p>這是p</p>
<span>這是span</span>
<p>這是p</p>
<span>這是span</span>
<p>這是p</p>
<span>這是span</span>
<a href="http://www.baidu.com">百度</a>
</div>
~~~
~~~
var btn = my$("btn");
btn.onclick = function () {
var inputs = my$("dv").childNodes;/!*獲取所有的子節點 返回值是個數組*!/
for(var i=0;i<inputs.length;i++){/!*循環遍歷獲得所有的子節點*!/
if(inputs[i].nodeType == 1 && inputs[i].nodeName == "P"){/!*判斷子節點是不是標簽節點同時節點名字是不是p標簽 (判斷的是結果 所以是大寫的P)*!/
inputs[i].style.backgroundColor = "pink";/!*滿足條件背景改變*!/
}
}
}
~~~
```
### 奇紅偶黃
```
~~~
<input type="button" value="變色" id="btn"/>
<div>
<ul id="uu">
<li>西施</li>
<li>昭君</li>
<li>貂蟬</li>
<li>玉環</li>
<li>芙蓉姐姐</li>
</ul>
</div>
~~~
~~~
<script>
var btn = my$("btn");/*獲取事件源*/
btn.onclick = function () {/*點擊事件*/
var nodes = my$("uu").childNodes;/*獲取里面的所有的子節點 返回值是個數組*/
var num = 0;/*記錄li的個數 從0開始 類似于索引下標*/
for(var i=0;i<nodes.length;i++){
// 遍歷循環,拿到所有的節點
if(nodes[i].nodeType == 1 && nodes[i].nodeName == "LI"){/*判斷節點是不是標簽節點 同時是不是li*/
nodes[i].style.backgroundColor = num%2 == 0? "red" : "yellow";/*判斷li的索引。從索引的值去判斷奇偶*//*滿足條件為紅,不然則是黃*/
num ++;/*li的索引+1*/
}
}
}
~~~
</script>
```
### 點擊切換背景圖
```
~~~
<style>
* {
margin: 0px;
padding: 0px;
}
body {
background-image: url("images/1.jpg");
}
#mask {
background-color: rgba(255, 255, 255, 0.3);
height: 200px;
text-align: center;
}
#mask img {
width: 200px;
margin-top: 35px;
cursor: pointer;
}
</style>
~~~
<div id="mask">
<img src="images/1.jpg" alt="">
<img src="images/2.jpg" alt="">
<img src="images/3.jpg" alt="">
</div>
~~~~~~
var nodes = my$("mask").children;/*獲取里面的子級元素 返回值是個數組 3個img*/
for(var i=0;i<nodes.length;i++){/*循環獲取所有的元素*/
nodes[i].onclick = function () {/*給每個img 做點擊事件*/
document.body.style.backgroundImage = "url(\""+this.src+"\")";/*body背景圖改變*/
}
}
~~~
```
### 點擊按鈕創建列表
```
~~~
div {
width: 300px;
height: 400px;
border: 1px solid #ccc;
}
ul{
list-style: none;
}
~~~
<input type="button" value="創建列表" id="btn"/>
<div id="dv"></div>
var names = ["楊過", "郭靖", "張無忌", "張三豐", "喬峰", "段飛", "丁棚"];
my$("btn").onclick = function () {
var str = "<ul>";/*str中加上<ul>*/
for(var i =0 ;i<names.length;i++){/*獲取names的值*/
str += "<li>"+names[i]+"</li>"/*取每個值拼接上li*/
}
str += "</ul>";/*加上右面的</ul>*/
my$("dv").innerHTML = str;/*把內容加入到HTML中 吃標簽*/
var list = my$("dv").getElementsByTagName("li");/*獲取所有的li*/
for(var i= 0;i<list.length;i++){/*循環所有的li*/
list[i].onmouseover = function () {/*鼠標經過事件*/
this.style.backgroundColor = "red";/*背景色改變*/
};
list[i].onmouseout = function () {/*鼠標離開事件*/
this.style.backgroundColor = "";/*背景色結束*/
}
}
}
~~~
```
### 全選和反選
```
~~~
<style>
* {
padding: 0;
margin: 0;
}
.wrap {
width: 300px;
margin: 100px auto 0;
}
table {
border-collapse: collapse;
border-spacing: 0;
border: 1px solid #c0c0c0;
width: 00px;
}
th,
td {
border: 1px solid #d0d0d0;
color: #404060;
padding: 10px;
}
th {
background-color: #09c;
font: bold 16px "微軟雅黑";
color: #fff;
}
td {
font: 14px "微軟雅黑";
}
tbody tr {
background-color: #f0f0f0;
}
tbody tr:hover {
cursor: pointer;
background-color: #fafafa;
}
</style>
~~~
~~~
<div class="wrap">
<table>
<thead>
<tr>
<th>
<input type="checkbox" id="j_cbAll"/>
</th>
<th>菜名</th>
<th>飯店</th>
</tr>
</thead>
<tbody id="j_tb">
<tr>
<td>
<input type="checkbox"/>
</td>
<td>紅燒肉</td>
<td>田老師</td>
</tr>
<tr>
<td>
<input type="checkbox"/>
</td>
<td>西紅柿雞蛋</td>
<td>田老師</td>
</tr>
<tr>
<td>
<input type="checkbox"/>
</td>
<td>油炸榴蓮</td>
<td>田老師</td>
</tr>
<tr>
<td>
<input type="checkbox"/>
</td>
<td>清蒸助教</td>
<td>田老師</td>
</tr>
</tbody>
</table>
</div>
var cak = my$("j_cbAll");/!*獲取全選的元素 事件源*!/
var cks = my$("j_tb").getElementsByTagName("input");/!*獲取下面的選框 返回值是個集合*!/
cak.onclick = function () {/!*給事件源做點擊事件*!/
for(var i = 0;i<cks.length;i++){/!*循環遍歷*!/
cks[i].checked = this.checked;/!*小選框的狀態等于全選框的狀態*!/
}
};
for(var i = 0;i<cks.length;i++){/!*循環獲取小的復選框*!/
cks[i].onclick = function () {/!*給所有的小復選框做點擊事件*!/
var flag = true;/!*假設選中*!/
for(var j =0;j<cks.length;j++){/!*循環所有的小復選框,查看狀態*!/
// 選中是true 在判斷條件中取反為false不會進入 在選中狀態為false時,取反后為true 進入判斷
if( !cks[j].checked){/!* *!/
flag = false;/!*改了flag的值*!/
break;
}
}
cak .checked = flag;/!*全選的復選的轉態*!/
}
}
~~~
```
### 動態創建表格
```
<style>
div{
width: 200px;
height: 200px;
border: 1px solid red;
}
</style>
<input type="button" value="創建表格" id="btn"/>
<div id="dv"></div>
var arr=[
{name:"百度",href:"http://www.baidu.com"},
{name:"谷歌",href:"http://www.google.com"},
{name:"優酷",href:"http://www.youku.com"},
{name:"土豆",href:"http://www.tudou.com"},
{name:"快播",href:"http://www.kuaibo.com"},
{name:"愛奇藝",href:"http://www.aiqiyi.com"}
];
//點擊按鈕創建表格
my$("btn").onclick=function () {
//創建table加入到div中
var tableObj=document.createElement("table");
tableObj.border="1";
tableObj.cellPadding="0";
tableObj.cellSpacing="0";
my$("dv").appendChild(tableObj);
//創建行,把行加入到table中
for(var i=0;i<arr.length;i++){
var dt=arr[i];//每個對象
var trObj=document.createElement("tr");
tableObj.appendChild(trObj);
//創建第一個列,然后加入到行中
var td1=document.createElement("td");
td1.innerText=dt.name;
trObj.appendChild(td1);
//創建第二個列
var td2=document.createElement("td");
td2.innerHTML="<a href="+dt.href+">"+dt.name+"</a>";
trObj.appendChild(td2);
}
};
```
```
- 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
- 前端路由