JavaScript小案例程序保存(完整代碼+效果展示)

1.案例——點擊button換照片

  • html部分
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>換照片</title>
</head>
<body>
	<button id="btn">點我</button>
	<br>
	<image src= 'images/a.jpg' id = 'a'></image>
	<script type="text/javascript" src="js/button.js"></script>
</body>
</html>
  • js部分
//1.獲取元素
var btn = document.getElementById('btn');
var image_a = document.getElementById('a') ;
//2.給按鈕註冊事件
var flag = 1;//當flag值是1的時候對應a.jpg,當flag值是2的時候對應b.jpg
btn.onclick = function(){
	//3.切換圖片
	if (flag == 1) {
	image_a.src = 'images/b.jpg';
	flag = 2;
}else{
	image_a.src = 'images/a.jpg';
	flag = 1;
}
}
  • 實現效果
    在這裏插入圖片描述

2.案例——點擊圖片顯示/隱藏,button上的字跟着變化

  • html部分
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>點擊切換</title>
	<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
	<input type="button" id="btn" value="隱藏">
	<div id="box" ></div>
	<script type="text/javascript" src="js/box.js"></script>
</body>
</html>
  • css部分
#box{
	width: 500px;
	height: 300px;
	background-color: red;
}
.show{
	display: block;
}
.hidden{
	display: none;
}
  • js部分
    (方法一寫法)
//方法一:
//1.獲取元素
var btn = document.getElementById('btn');
//2.給按鈕註冊事件
var flag = 1;
btn.onclick = function(){
	var box = document.getElementById('box');
	//3.控制div的顯示和隱藏
	box.className = 'hidden';
	//如何設置按鈕對應的屬性名字
	if (flag == 1) {
	btn.value = '顯示';
	flag = 2;
		box.className = 'hidden';
	}else{
		btn.value = '隱藏';
		box.className = 'show';
		flag = 1;
	}
}

(方法二寫法)

//方法二:
//this的幾種情況
//1.普通函數中的this ——》window
//2.構造函數中的this ——》是當前構造函數創建的對象
//3.方法中的this——》方法所屬的對象
//4.事件處理函數中的this——》事件源,誰調用的該事件this指向誰
//


//1.獲取元素
var btn = document.getElementById('btn');
//2.給按鈕註冊事件
var isShow = true;
btn.onclick = function(){
	var box = document.getElementById('box');
	//3.控制div的顯示和隱藏
	if (isShow) {
	box.className = 'hidden';
	this.value = '顯示';
	isShow = false;
	}else{
		box.className = 'show';

		this.value = '隱藏';
		isShow = true;
	}
}
  • 實現效果
    在這裏插入圖片描述

3.取消a標籤的默認行爲

a標籤的默認行爲未取消時

  • html部分
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>圖片放大</title>
</head>
<body>
	<a href="http://www.baidu.com" id="link">百度</a>
	
</body>
<script type="text/javascript" src="js/fangda.js"></script>
</html>
  • js部分
var btn = document.getElementById('link');
btn.onclick = function(){
	alert("被點擊了");
	//取消a標籤的默認行爲
	//return false;
}

實現效果
在這裏插入圖片描述
取消時

  • js部分
var btn = document.getElementById('link');
btn.onclick = function(){
	alert("被點擊了");
	//取消a標籤的默認行爲
	return false;
}
  • 實現效果
    在這裏插入圖片描述

4.點擊圖片放大

html部分

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>圖片放大</title>
	<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
	<h2>美女書屋</h2>
	<div id="bookshop">
		<a href="images/1.jpg" title="一號">
			<img src="images/1-small.jpg" width = "100px">
		</a>
		<a href="images/2.jpg" title="二號">
			<img src="images/2-small.jpg" width = "100px">
		</a>
		<a href="images/3.jpg" title="三號">
			<img src="images/3-small.jpg" width = "100px">
		</a>
		<a href="images/4.jpg" title="四號">
			<img src="images/4-small.jpg" width = "100px">
		</a>
	</div>
	<div style="clear: both"></div>
	<img id="image" src="images/placeholder.png" alt="" width="450px" />
	<p id="des">選擇一個圖片</p>
	
</body>
<script type="text/javascript" src="js/fangda.js"></script>
</html>
  • css部分
body{
	font-family: "Helvetica","Arial",serif;
	color: #333;
	background-color: #ccc;
	margin: 1em 10%;
}
h1{
	color: #333;
	background-color: transparent;
}
a{
	color: #c60;
	background-color: transparent;
	font-weight: bold;
}
  • js部分
//1.獲取到所有的a標籤
var bookshop = document.getElementById('bookshop');
var links = bookshop.getElementsByTagName('a');
//2.給所有的a標籤註冊事件
for (var i = 0; i < links.length; i++) {
	//給所有的a標籤註冊事件
	var link = links[i];
	link.onclick = function(){
	//4.切換圖片
	//獲取佔位的大的img標籤
	var image = document.getElementById('image');
	//把img標籤的src屬性設置爲當前點擊的a標籤的href
	image.src = this.href;
	//5.設置a標籤的內容
		//獲取p標籤
		var des = document.getElementById('des');
		//當前點擊的a標籤的title屬性爲this.title
		//如何設置p標籤顯示的內容
		
		des.innerText = this.title;
	//3.取消a的默認行爲
	return false;
	}
}
  • 補充知識
    js中innerHTML與innerText的用法與區別:
  • 實現效果
    在這裏插入圖片描述1、js中innerHTML的用法:

innerHTML可獲取或設置指定元素標籤內的 html內容,從該元素標籤的起始位置到終止位置的全部內容(包含html標籤)。

獲取元素的內容:element.innerHTML;

給元素設置內容:element.innerHTML =htmlString;

代碼示例爲:

<p id="test"><font color="#000">獲取段落p的 innerHTML</font></p>

執行:

document.getElementById("test").innerHTML

輸出內容爲:<font color="#000">獲取段落p的 innerHTML</font>
2、js中innerText的用法:

innerText可獲取或設置指定元素標籤內的文本值,從該元素標籤的起始位置到終止位置的全部文本內容(不包含html標籤)。

獲取元素的內容:element.innerText;
給元素設置內容:element.innerText = string;

代碼示例爲:

<p id="test"><font color="#000">獲取段落p的 innerHTML</font>測試測試</p>

執行:

document.getElementById("test").innerHTML

輸出內容爲: 獲取段落p的 innerHTML試測試

5.給文本框賦值

代碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>設置文本框的值</title>
</head>
<body>
	<input type="text" ><br>
	<input type="text" ><br>
	<input type="text" ><br>
	<input type="text" ><br>
	<input type="text" ><br>
	<input type="text" ><br>
	<input type="text" ><br>
	<input type="text" ><br>
	<input id="btn" type="button" value="獲取文本框的值">

	<script type="text/javascript">
	//給所有的文本框賦值
		var inputs = document.getElementsByTagName('input');
		for (var i = 0; i < inputs.length-1; i++) {
			var input = inputs[i];
			if(input.type == 'text'){
				input.value = i;
			}
		}
		//2.當點擊按鈕的時候,獲取所有文本框的值
		var btn = document.getElementById('btn');
		btn.onclick = function(){
		var array = [];
			for(var i = 0; i<inputs.length-1;i++){
				var input = inputs[i];
				if(input.type == 'text'){
					array.push(input.value);
				}
			}
		console.log(array.join('|'));
		}
	</script>
</body>
</html>

實現效果:
在這裏插入圖片描述

6.檢測用戶名和密碼

檢測用戶名是否是3-6位,密碼是否是6-8位,如果不滿足要求 高亮顯示文本框
html部分:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>檢測用戶名和密碼</title>
	<style type="text/css">
	.bg{
		background-color: yellow;
	}
</style>
</head>
<body>
	<input type="text" id="txtUserName" ><br>
	<input type="password" id='txtUserPassword'><br>
	<input type="button" value="登錄" id="btnLogin">
</body>
</html>

js部分:

<script type="text/javascript">
		//檢測用戶名是否是3-6位,密碼是否是6-8位,如果不滿足要求 高亮顯示文本框
		var btnLogin = document.getElementById('btnLogin');
		btnLogin.onclick = function(){
			var txtUserName = document.getElementById('txtUserName');
			var txtUserPassword = document.getElementById('txtUserPassword');
			//檢測用戶名3-6位
			if (txtUserName.value.length <3 || txtUserName.value.length>6) {
				txtUserName.className = 'bg';
				return;
			}else{
				txtUserName.className = '';

			}
			//檢測密碼是否是6-8位
			if (txtUserPassword.value.length<6 || txtUserPassword.value.length>8) {
				txtUserPassword.className = 'bg';
				return;

			}else{
				txtUserPassword.className = '';

			}
		}

	</script>
  • 實現效果
    在這裏插入圖片描述

7.設置下拉框,點擊按鈕隨機選中

  • html部分:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>設置下拉框選項</title>
</head>
<body>
	<input type="button" value="設置" id="btnSet">
	<select id = "selCities">
		<option value="1">北京</option>
		<option value="2">上海</option>
		<option value="3">廣州</option>
		<option value="4">深圳</option>
		<option value="5">武漢</option>

	</select>
</body>
</html>
  • js部分:
<script type="text/javascript">
		//1.給按鈕註冊事件
		var btn = document.getElementById('btnSet');
		btn.onclick = function(){
		//2.獲取下拉框中的所有option
		var sel = document.getElementById('selCities');
		var options = sel.getElementsByTagName('option');
		//3.隨機生成索引
		//Math.random()範圍[0,1)
		var randomIndex = parseInt(Math.random()*options.length);
		//4.根據索引獲取option 並讓option選中
		var option = options[randomIndex];
		option.selected = true;
		}
	</script>

在這裏插入圖片描述

8.搜索文本框

1.文本框被選中的時候 文本框清空,並讓字體變爲黑色
2.當文本框失去焦點,如果文本框內容爲空則還原文本框裏的文字,並讓字體變爲灰色

  • html部分:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>文本框搜索</title>
	<style type="text/css">
	.gray{
		color: gray;
	}
	.black{
		color: black;
	}
</style>
</head>
<body>

	<input type="text" class="gray" value="請輸入搜索關鍵字" id="txtSearch">
	<input type="button" value="搜索" id="btnSearch">
</body>
</html>
  • js部分:
<script type="text/javascript">
		//1.文本框被選中的時候 文本框清空,並讓字體變爲黑色
		//2.當文本框失去焦點,如果文本框內容爲空則還原文本框裏的文字,並讓字體變爲灰色
		var textbtn = document.getElementById('txtSearch');
		//獲取焦點的事件focus
		txtSearch.onfocus = function(){
			if (this.value =="請輸入搜索關鍵字") {
				this.value = '';
				this.className = 'black';
			}
		}
		//2.~~
		txtSearch.onblur = function(){
			//文本框內容爲空
			if(this.value.length =='' ){
				this.value = "請輸入搜索關鍵字";
				this.className = 'gray';
			}
		}
	</script>
  • 實現效果:
    在這裏插入圖片描述

9.反選全選

1.全選
2.當點擊子的checkbox,如果所有的子的checkbox都被選中,讓父的checkbox也選中,如果有一個子的未被選中 父的也取消選中

  • html部分:
<style type="text/css">
      * {
            padding: 0;
            margin: 0;
        }

        .wrap {
            width: 300px;
            margin: 100px auto 0;
        }

        table {
            border-collapse: collapse;
            border-spacing: 0;
            border: 1px solid #c0c0c0;
            width: 300px;
        }

        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>

</head>
<body>
  <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>iPhone8</td>
                <td>8000</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>iPad Pro</td>
                <td>5000</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>iPad Air</td>
                <td>2000</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>Apple Watch</td>
                <td>2000</td>
            </tr>

          </tbody>
      </table>
      <input type="button" value="  反 選  " id="btn">
  </div>
  </body>
</html>
  • js部分
<script type="text/javascript">
    //1.全選
    //1.1獲取父checkbox 註冊點擊事件
    var j_cbAll = document.getElementById('j_cbAll');
    var j_tb = document.getElementById('j_tb');
    var inputs = j_tb.getElementsByTagName('input');
    j_cbAll.onclick = function(){

    //1.2找到所有的子checkbox 
    for(var i = 0;i < inputs.length;i++){
      var input = inputs[i];
      if (input.type == 'checkbox') {
    //讓這些checkbox的狀態跟父checkbox保持一致
    ////可以通過this找到事件源
        input.checked = this.checked;
      }
    }

    }
    //2.當點擊子的checkbox,如果所有的子的checkbox都被選中,讓父的checkbox也選中,如果有一個子的未被選中 父的也取消選中
    for(var i = 0;i < inputs.length;i++){//此處的循環是用於子的checkbox,註冊點擊事件
      var input = inputs[i];
      //判斷是否受checkbox
      if (input.type != 'checkbox') {
        continue;//結束當前循環 繼續下一次循環
      }
  
    //給子的checkbox註冊點擊事件
    input.onclick = function(){
      checkAllCheckBox();
    }

    //判斷父的checkbox的狀態,封裝成函數
    function checkAllCheckBox(){
      var isAllChecked = true;
      //判斷所有子的checkbox受否都被選中
        for(var i = 0;i<inputs.length;i++){
          var input = inputs[i];

          if(input.type !='checkbox'){
            continue;
          }
          //判斷所有的checkbox是否都被選中
          //假設所有的checkbox都被選中
          if(!input.checked){
            isAllChecked = false;
          }
        }
        //設置父的checkbox狀態
        j_cbAll.checked=isAllChecked; 
      }
    }

    //3.反選
    //3.1給反選按鈕註冊點擊事件
    var btn = document.getElementById('btn');
    btn.onclick = function(){
    //3.2找到所有的子的checkbox 讓其反選
      for(var i = 0;i<inputs.length;i++){
        var input = inputs[i];
        //判斷是否是checkbox
        if (input.type != 'checkbox'){
          continue;
        }
        //反選
        input.checked = !input.checked;
        //父的checkbox
        checkAllCheckBox();
      }
    }
  </script>
  • 實現效果
    在這裏插入圖片描述

10.隔行變色

  • html部分
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>隔行變色</title>
</head>
<body>
	<style type="text/css">

</style>
	<ul id="mv">
		<li>楊冪</li>
		<li>劉詩詩</li>
		<li>林允兒</li>
		<li>林依晨</li>
		<li>李冰冰</li>

	</ul>
</body>
</html>
  • js部分
<script type="text/javascript">
		var mv = document.getElementById('mv');
		mv.getElementsByTagName('li');
		//判斷是否有子節點
		if(mv.hasChildNodes()){
			for(var i = 0;i < mv.children.length;i++){
				var li = mv.children[i];
				if(i%2 == 0){
					li.style.backgroundColor = 'red';
				}else{
					li.style.backgroundColor = 'purple';
				}
				

				}
		}
		
	</script>
  • 實現效果
    在這裏插入圖片描述

11.使用element.innerHTML動態創建元素

  • html部分
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>動態創建元素</title>
</head>
<body>
	<input type="button" value="按鈕" id="btn">
	<div id="box"></div>
	
</body>
</html>
  • js部分
<script type="text/javascript">
		var btn = document.getElementById('btn');
		var box = document.getElementById('box');
		btn.onclick = function(){
			box.innerHTML = 'hello <p>world</p>';
		}
	</script>
  • 實現效果
    在這裏插入圖片描述

12.使用document.createElement()創建元素

實現效果
點擊按鈕 動態創建列表 鼠標放上去高亮顯示
html部分:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>動態創建元素3</title>
</head>
<body>
	<input type="button" value="按鈕" id="btn">
	<div id="box">
	
	</div>
	</body>
</html>
  • js部分
<script type="text/javascript" src="common.js"></script>
	<script type="text/javascript">
		//點擊按鈕 動態創建列表 鼠標放上去高亮顯示
		var datas = ['西施','貂蟬','劉亦菲','芙蓉姐姐'];
		my$('btn').onclick = function(){
			//動態創建ul,內存中創建對象
			var ul = document.createElement('ul');
			//把ul放到頁面上
			my$('box').appendChild(ul);
			for (var i = 0;i<datas.length;i++){
				var data = datas[i];
				//在內存中動態創建li
				var li = document.createElement('li');
				//把li添加到DOM樹,並且會重新繪製
				ul.appendChild(li);
					//設置li中顯示的內容
				// li.innerText = data;//innerText有兼容性問題
				setInnerText(li,data);


				//開始處理高亮顯示

				//給li註冊事件
				li.onmouseover = liMouseOver;
				li.onmouseout = liMouseOut;
				}
			}
			//當鼠標經過li的時候執行
			function liMouseOver(){
				//鼠標經過高亮顯示
				this.style.backgroundColor = 'red';
			}
			function liMouseOut(){ 
				//鼠標離開高亮顯示
				this.style.backgroundColor = '';
				
			}
			//設置InnerText的兼容性問題
		function setInnerText(element,content){
		//判斷當前瀏覽器是否支持innerText(若當前瀏覽器支持innerText就用InnerText,不支持就用TextContent)
		if(typeof element.innerText =='string'){//若不是string的話就是undefined
			element.innerText = content;
		}else{
			element.textContent = content;
		}

	}
	</script>

common.js

function my$(id){
	return document.getElementById(id);
}
//處理瀏覽器兼容性
//獲取第一個子元素
function getfirstElementChild(element){
	var node,nodes = element.childNodes, i = 0;
	while(node = nodes[i++]){
		if(node.nodeType == 1){
			return node;
		}
	}
	return null;
}

//設置InnerText和TextContent的兼容性問題
function setInnerText(element,content){
//判斷當前瀏覽器是否支持innerText(若當前瀏覽器支持innerText就用InnerText,不支持就用TextContent)
if(typeof element.innerText =='string'){//若不是string的話就是undefined
	element.innerText = content;
	}else{
		element.textContent = content;
}
  • 實現效果
    在這裏插入圖片描述

13.動態創建刪除表格

  • html部分:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>動態創建表格</title>
	<style>
	#box table{
		border-collapse: collapse;
	}
</style>
</head>
<body>
	<div id="box">

	</div>
	</body>
</html>
  • js部分
<script src="common.js"></script>
	<script>
		var datas = [
		{name:'aa',subject:'語文', score:34},
		{name:'bb',subject:'數學', score:45},
		{name:'cc',subject:'英語', score:56},
		{name:'dd',subject:'政治', score:67},
		{name:'ee',subject:'歷史', score:67},
		{name:'ff',subject:'物理', score:78},

		];
		//表頭數據
		var headDatas = ['姓名','科目','成績','操作'];

		//1.創建table
		var table = document.createElement('table');

		my$('box').appendChild(table);//將table加入box中
		table.border = '1px';
		table.width = '400px';
		//2.創建表頭
		var thead = document.createElement('thead');
		table.appendChild(thead);

		var tr = document.createElement('tr');
		thead.appendChild(tr);
		tr.style.height = '40px';
		tr.style.backgroundColor='lightgray';
		//遍歷頭部數據,創建th
		for(var i=0;i<headDatas.length;i++){
			var th = document.createElement('th');
			tr.appendChild(th);
			setInnerText(th,headDatas[i]);//給th元素設置內容
		}

		//調用setInnerText,兼容性問題
		//3.創建數據行
		var tbody = document.createElement('tbody');
		table.appendChild(tbody);
		for(var i=0;i<datas.length;i++){
			//一個學生的成績
			var data = datas[i];
			tr = document.createElement('tr');
			tbody.appendChild(tr);

			
			//遍歷對象 創建列
			for(var key in data){
				var td = document.createElement('td');
				tr.appendChild(td);
				setInnerText(td,data[key]);
			}
			//生成刪除對應的列
			td = document.createElement('td');
			tr.appendChild(td);
			//刪除的超鏈接
			var link = document.createElement('a');
			td.appendChild(link);
			link.href = 'javascript:void(0)';
			setInnerText(link,'刪除');
			link.onclick = linkDelete;
		}
		   function linkDelete() {
      // removeChild()
      // 獲取父元素
      // 
      // 獲取要刪除的行
    		var tr = this.parentNode.parentNode;
    		tbody.removeChild(tr);
    		return false;
    }
	</script>
  • common.js
function my$(id) {
  return document.getElementById(id);
}

// 處理瀏覽器兼容性
// 獲取第一個子元素
function getFirstElementChild(element) {
    var node, nodes = element.childNodes, i = 0;
    while (node = nodes[i++]) {
        if (node.nodeType === 1) {
            return node;
        }
    }
    return null;
}

// 處理瀏覽器兼容性
// 獲取下一個兄弟元素
 function getNextElementSibling(element) {
    var el = element;
    while (el = el.nextSibling) {
      if (el.nodeType === 1) {
          return el;
      }
    }
    return null;
  }


// 處理innerText和textContent的兼容性問題
// 設置標籤之間的內容
function setInnerText(element, content) {
  // 判斷當前瀏覽器是否支持 innerText
  if (typeof element.innerText === 'string') {
    element.innerText = content;
  } else {
    element.textContent = content;
  }
}

  • 實現效果
    在這裏插入圖片描述

14.菜單欄點擊高亮顯示

  • html部分:
	<style>
        #menu ul li.current {
            background-color: burlywood;
        }

        #menu ul li a {
            text-decoration: none;
        }
    </style>
</head>
<body>
    <div id="menu">
        <ul>
            <li class="current"><a href="javascript:void(0)">首頁</a></li>
            <li><a href="javascript:undefined">播客</a></li>
            <li><a href="javascript:void(0)">博客</a></li>
            <li><a href="javascript:void(0)">相冊</a></li>
            <li><a href="javascript:void(0)">關於</a></li>
            <li><a href="javascript:void(0)">幫助</a></li>
        </ul>
       
    </div>
</body>
</html>
  • js部分
<script type="text/javascript" src="js/common.js"></script>
    <script type="text/javascript">
	//void是運算符
	//執行void後面的表達式 並始終返回undefined
	// var menu = document.getElementById('menu');
	var menu = my$('menu');
	//獲取menu中的ul(ul是第一個元素)
	var ul = getfirstElementChild(menu);
	for(var i = 0;i<ul.children.length;i++){
		var li = ul.children[i];//拿到每一個li
		//獲取li中的a標籤
		var link = getfirstElementChild(li);
		link.onclick =linkClick;//注意此處不要加小括號 因爲此時是把函數賦給onclick,而不是函數的調用
	}
	function linkClick(){
        //讓其他所有的li取消高亮顯示
		for(var i = 0;i<ul.children.length;i++){
			var li = ul.children[i];
            li.className = '';
		}
		//讓當前a標籤所在的li高亮顯示
		//this是當前點擊的a標籤對應的元素(this是事件源)
		this.parentNode.className = 'current';
		//取消後續內容的執行
		return false;
	}

    </script>
  • common.js部分
function my$(id){
	return document.getElementById(id);
}
//處理瀏覽器兼容性
//獲取第一個子元素
function getfirstElementChild(element){
	var node,nodes = element.childNodes, i = 0;
	while(node = nodes[i++]){
		if(node.nodeType == 1){
			return node;
		}
	}
	return null;
}
  • 取消高亮顯示
    在這裏插入圖片描述

15.選水果

  • html部分
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>選擇水果</title>
</head>
<body>
	<style type="text/css">
	select{
		width: 200px;
		height: 200px;
		background-color: #33cccc;
		font-size: 20px;
	}
</style>
	<select id="all" multiple="multiple">
		<option>蘋果</option>
		<option>橘子</option>
		<option>西瓜</option>
		<option>哈密瓜</option>
		<option>草莓</option>
		<option>榴蓮</option>

	</select>
	<input type="button" value=">>" id="btn1">
	<input type="button" value="<<" id="btn2">
	<input type="button" value=">" id="btn3">
	<input type="button" value="<" id="btn4">
	<select id="select" multiple="multiple"></select>
	</body>
</html>
  • js部分
<script type="text/javascript" src="common.js"></script>
	<script type="text/javascript">
		//1.全部選擇
		var select = document.getElementById('select');
		var btn1 = document.getElementById('btn1');
		var all = document.getElementById('all');
		btn1.onclick = function(){
			//獲取select下面的所有元素
			//若從上往下索引錯誤,children被移走之後 索引會重新排列
			//若從下往上索引-順序錯誤
			// var alls = document.getElementById('all');
			// for(var i = alls.children.length-1;i>=0;i--){
			// 	var all = alls.children[i];
			// 	select.appendChild(all)
			// }
			// 
			  
			//方法索引號爲0
			var len = all.children.length;
			for(var i = 0;i<len;i++){
				var option = all.children[0];
				select.appendChild(option);
			}
		}
		//全部左移
		var btn2 = document.getElementById('btn2');
			btn2.onclick = function(){
				var len = select.children.length;
				for(var i = 0;i<len;i++){
					var option = select.children[0];
					all.appendChild(option);

		}
			}
		//單個右移
		// var btn3 = document.getElementById('btn3');
		// btn3.onclick = function(){
		// 	var option = all.children[0];
		// 	select.appendChild(option);
		// }
		// //單個左移
		// var btn4 = document.getElementById('btn4');
		// btn4.onclick = function(){
		// 	var option = select.children[0];
		// 	all.appendChild(option);
		// }
		 
		 
		
		//左邊多選往右移
		var btn3 = document.getElementById('btn3');
		btn3.onclick = function(){
			//找到所有選中的option
			var array = [];//存儲選中的option
			var len = all.children.length;
			for(var i = 0;i<len;i++){
				var option = all.children[i];
				if(option.selected){
					array.push(option);
					//去掉option選中之後的效果
					option.selected = false;
				}
			}
			for(var i = 0;i<len;i++){
				var option = array[i];
				select.appendChild(option);
		}
	}
		//左邊多選往右移
		var btn4 = document.getElementById('btn4');
		btn4.onclick = function(){
			var array = [];
			for(var i = 0;i<select.children.length;i++){
				var option = select.children[i];
				if(option.selected){
					array.push(option);
					//去掉option選中之後的效果
					option.selected = false;
			}
	}
	for(var i = 0;i<select.children.length;i++){
				var option = array[i];
				all.appendChild(option);
		}
	}
	</script>

  • 實現效果
    在這裏插入圖片描述

16.圖片跟着鼠標飛

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>跟着鼠標飛</title>
</head>
<body>
	<img src="images/tianshi.gif" id="tianshi" alt="">
	<style type="text/css">
	#tianshi {
		position: absolute;
	}
	body{
		line-height: 1000px;
	}

</style>
<script type="text/javascript">
	var tianshi = document.getElementById('tianshi');
	document.onmousemove = function(e){
		 //處理兼容性問題
		e = e || window.event;
		//鼠標在可視區域的位置
		// tianshi.style.left = e.clientX-20 + 'px';
		// tianshi.style.top = e.clientY + 'px';

		tianshi.style.left = e.pageX-20 + 'px';
		tianshi.style.top = e.pageY + 'px';
//鼠標在頁面中的位置
	}
</script>
</body>
</html>
  • 實現效果
    在這裏插入圖片描述

17.文本框中只允許輸入數字,不能輸入字母

按退出鍵可進行撤銷

  • 代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>輸入數字</title>
</head>
<body>
	<input type="text" name="" id="box">
	<script type="text/javascript">
		//學習鍵盤事件
		//keydown 鍵盤按下的時候
		//keyup 鍵盤彈起的時候
		//兩者區別  keydown的時候按鍵未錄入文本框  keyup時按鍵已錄入文本框
		var txt = document.getElementById('box');
		txt.onkeydown = function(e){
			//判斷按下的按鍵是否是數字
			//先做兼容性處理
			e = e||window.event;
			//e.keycode鍵盤碼 keycode的值在48-57是數字
			if((e.keyCode < 48 || e.keyCode>57 ) &&e.keyCode!==8){
				//非數字取消默認行爲
				// e.preventDefault();
				return false;
			}
		}
	</script>
</body>
</html>
  • 實現效果
    在這裏插入圖片描述

18.刪除提示(定時器)

  • 代碼部分:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>刪除成功</title>
	<style type="text/css">
	body{
		margin: 0;
		padding: 0;
	}
	#tip{
		width: 150px;
		height: 30px;
		background-color: lightgray;
		opacity: 0.5;
		margin: 200px auto;
		padding-top: 5px;
		text-align: center;
		color: red;
		display: none;

	}
</style>

</head>
<body>
	<input type="button" id="btn" value="刪除">
	<div id="tip">刪除成功</div>
	<script type="text/javascript">
		//當頁面的所有元素創建完成之後執行,不需要等待外部文件下載完畢
	var btn = document.getElementById('btn');
	btn.onclick = function(){
		//進行刪除操作
		//顯示刪除成功的tip
		var tip = document.getElementById('tip');
		tip.style.display = 'block';
		setTimeout(function(){
			tip.style.display = 'none';
		},3000);
	}
</script>
</body>
</html>
  • 實現效果
    在這裏插入圖片描述

19.點擊盒子向右移動

獲取盒子當前的位置 offsetLeft offsetTop

  • 代碼如下
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>簡單動畫</title>
	<style type="text/css">
	body{
		margin: 0;
	}
	#box{
		position: relative;
		background-color: red;
		width: 100px;
		height: 100px;
	}
</style>
</head>
<body>
	<input type="button" id="btn" value="移動">
	<div id="box"></div>
	<script type="text/javascript">
		//1.點擊按鈕讓盒子向右移動
		var btn = document.getElementById('btn');
		var box = document.getElementById('box');
		btn.onclick = function(){
			// box.style.left += 20 + 'px';//只能移動一次
			//如果標籤中的style沒有設置樣式屬性,我們獲取到的是空字符串
			//獲取盒子當前的位置 offsetLeft   offsetTop
			box.style.left = box.offsetLeft + 10 +'px';
		}
		//2.讓盒子不停的向右移動
	</script>
</body>
</html>
  • 實現效果
    在這裏插入圖片描述

20.盒子不停向右移動

  • 代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>簡單動畫</title>
	<style type="text/css">
	body{
		margin: 0;
	}
	#box{
		position: relative;
		background-color: red;
		width: 100px;
		height: 100px;
	}
</style>
</head>
<body>
	<input type="button" id="btn" value="移動">
	<input type="button" id="btn1" value="停止">

	<div id="box"></div>
	<script type="text/javascript">
		//1.點擊按鈕讓盒子向右移動
		var btn = document.getElementById('btn');
		

		var box = document.getElementById('box');
		btn.onclick = function(){
			// box.style.left += 20 + 'px';//只能移動一次
			//如果標籤中的style沒有設置樣式屬性,我們獲取到的是空字符串
			//獲取盒子當前的位置 offsetLeft   offsetTop
			// box.style.left = box.offsetLeft + 10 +'px';
		//2.讓盒子不停的向右移動(通過循環)
		// for(var i = 0;i< 100;i++){
		// 	box.style.left = box.offsetLeft + 1 +'px';//循環速度非常快 看不到循環過程
		// }
		//2.讓盒子不停的向右移動(通過設置定時器)
		var timerId = setInterval(function(){
			//判斷盒子當前位置 若到達500則停止定時器
			if(box.offsetLeft == 500){
				clearInterval(timerId);
				//退出函數
				return;
			}
			box.style.left = box.offsetLeft + 10 +'px';
		},50);
		}
	
	</script>
</body>
</html>
  • 實現效果
    在這裏插入圖片描述

21.倒計時

定時器的應用

  • 代碼部分
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>倒計時</title>
</head>
<body>
	<style type="text/css">
	.time-item {
      width: 430px;
      height: 45px;
      margin: 0 auto;
      
    }
    
    .time-item strong {
        background: orange;
        color: #fff;
        line-height: 49px;
        font-size: 36px;
        font-family: Arial;
        padding: 0 10px;
        margin-right: 10px;
        border-radius: 5px;
        box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.2);
    }
  
    .time-item > span {
        float: left;
        line-height: 49px;
        color: orange;
        font-size: 32px;
        margin: 0 10px;
        font-family: Arial, Helvetica, sans-serif;
    }
    .title {
      width: 280px;
      height: 50px;
      margin:200px auto 50px auto;
    }
</style>
	<h1 class="title">距離聖誕節,還有</h1>
	<div class="time-item">
		<span><span id="day">00</span></span>
		<strong><span id="hour">00</span></strong>
		<strong><span id="minute">00</span></strong>
		<strong><span id="second">00</span></strong>
		

	</div>
	<script type="text/javascript" src="common.js"></script>
	<script type="text/javascript">
		var endDate = new Date('2019-12-25 00:00:00');
		//獲取span
		var spanDay = my$('day');
		var spanHour = my$('hour');
		var spanMinute = my$('minute');
		var spanSecond = my$('second');
		setInterval(countdown,1000);
		countdown();
	//寫個定時器 隔一秒執行一次
		function countdown(){
		var startDate = new Date();

			//計算兩個日期日期差
			//定義一個變量來接受
		var interval = getInterval(startDate,endDate);
		setInnerText(spanDay,interval.day);
		setInnerText(spanHour,interval.hour);
		setInnerText(spanMinute,interval.minute);
		setInnerText(spanSecond,interval.second);


		}
	</script>
</body>
</html>
  • common.js部分
function my$(id) {
  return document.getElementById(id);
}

// 處理瀏覽器兼容性
// 獲取第一個子元素
function getFirstElementChild(element) {
    var node, nodes = element.childNodes, i = 0;
    while (node = nodes[i++]) {
        if (node.nodeType === 1) {
            return node;
        }
    }
    return null;
}

// 處理瀏覽器兼容性
// 獲取下一個兄弟元素
 function getNextElementSibling(element) {
    var el = element;
    while (el = el.nextSibling) {
      if (el.nodeType === 1) {
          return el;
      }
    }
    return null;
  }


// 處理innerText和textContent的兼容性問題
// 設置標籤之間的內容
function setInnerText(element, content) {
  // 判斷當前瀏覽器是否支持 innerText
  if (typeof element.innerText === 'string') {
    element.innerText = content;
  } else {
    element.textContent = content;
  }
}



//處理註冊事件瀏覽器兼容性問題
function addEventListener(element,eventName,fn){
if(element.addEventListener){
	element.addEventListener(eventName,fn);
}else if(element.attachEvent){
	element.attachEvent('on' +eventName,fn);
}else{element['on' + eventName] = fn;
	}
}






//處理移除事件的兼容性處理
function removeEventListener(element,eventName,fn){
	if(element.removeEventListener){
		element.removeEventListener(eventName,fn);
	}else if(element.detachEvent){
		element.detachEvent('on'+ eventName,fn);
	}else{
		element['on' + eventName] = null;
	}
}
// 獲取頁面滾動距離的瀏覽器兼容性問題
// 獲取頁面滾動出去的距離
function getScroll() {
  var scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;
  var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
  return {
    scrollLeft: scrollLeft,
    scrollTop: scrollTop
  }
}

// 獲取鼠標在頁面的位置,處理瀏覽器兼容性
function getPage(e) {
  var pageX = e.pageX || e.clientX + getScroll().scrollLeft;
  var pageY = e.pageY || e.clientY + getScroll().scrollTop;
  return {
    pageX: pageX,
    pageY: pageY
  }
}


//格式化日期對象,返回yyyy-MM-dd HH:mm:ss的形式
function formatDate(date) {
  // 判斷參數date是否是日期對象
  // instanceof  instance 實例(對象)   of 的
  // console.log(date instanceof Date);
  if (!(date instanceof Date)) {
    console.error('date不是日期對象')
    return;
  }

  var year = date.getFullYear(),
      month = date.getMonth() + 1,
      day = date.getDate(),
      hour = date.getHours(),
      minute = date.getMinutes(),
      second = date.getSeconds();

  month = month < 10 ? '0' + month : month;
  day = day < 10 ? '0' + day : day;
  hour = hour < 10 ? '0' + hour : hour;
  minute = minute < 10 ? '0' + minute : minute;
  second = second < 10 ? '0' + second : second;

  return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;
}

// 獲取兩個日期的時間差
function getInterval(start, end) {
  // 兩個日期對象,相差的毫秒數
  var interval = end - start;
  // 求 相差的天數/小時數/分鐘數/秒數
  var day, hour, minute, second;

  // 兩個日期對象,相差的秒數
  // interval = interval / 1000;
  interval /= 1000;

  day = Math.round(interval / 60 / 60 / 24);
  hour = Math.round(interval / 60 / 60 % 24);
  minute = Math.round(interval / 60 % 60);
  second = Math.round(interval % 60);

  return {
    day: day,
    hour: hour,
    minute: minute,
    second: second
  }
}
  • 實現效果
    在這裏插入圖片描述

22.拖拽窗口並關閉窗口

  • 代碼顯示:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>拖拽界面</title>
	<style>
        * {
            margin: 0;
            padding: 0;
        }

        .nav {
            height: 30px;
            background: #036663;
            border-bottom: 1px solid #369;
            line-height: 30px;
            padding-left: 30px;
        }

        .nav a {
            color: #fff;
            text-align: center;
            font-size: 14px;
            text-decoration: none;

        }

        .d-box {
            width: 400px;
            height: 300px;
            border: 5px solid #eee;
            box-shadow: 2px 2px 2px 2px #666;
            position: absolute;
            top: 40%;
            left: 40%;
            background-color: white;

            /* 不讓文字被選中 */
            -webkit-user-select:none;
            -moz-user-select:none;
            -ms-user-select:none;
            user-select:none;
        }

        .hd {
            width: 100%;
            height: 25px;
            background-color: #7c9299;
            border-bottom: 1px solid #369;
            line-height: 25px;
            color: white;
            /*鼠標樣式(十字)*/
            cursor: move;
        }

        #box_close {
            float: right;
            /*鼠標變成小手*/
            cursor: pointer;
        }
    </style>
</head>
<body>
	<div class="nav">
		<a href="javascript:;" id="register">註冊信息</a>
	</div>
	<div class="d-box" id="d_box">
		<div class="hd" id="drop">註冊信息(可以拖拽)
			<span id="box_close">【關閉】</span>
		</div>
		<div class="bd"></div>
	</div>
	<script type="text/javascript" src="common.js"></script>
	<script type="text/javascript">
		var box = document.getElementById('d_box');
		var drop = document.getElementById('drop');
		drop.onmousedown = function(e){
			//處理兼容性問題
			e = e || window.event;
			//當鼠標按下的時候 求鼠標在盒子中的位置
			//鼠標在盒子中的位置 = 鼠標在頁面上的位置 - 盒子的位置
			var x = getPage(e).pageX-box.offsetLeft;
			var y = getPage(e).pageY-box.offsetTop;
			//鼠標在文檔中移動
			//事件對象e
			document.onmouseover = function(e){
				e = e || window.event;
				//當鼠標在頁面上移動的時候——》求盒子的座標
				//盒子的座標 = 鼠標在頁面中的位置-鼠標在盒子中的位置
				var boxX = getPage(e).pageX - x;
				var boxY = getPage(e).pageY - y;
				box.style.left = boxX + 'px';
				box.style.top = boxY + 'px';
			}
		}
		drop.onmouseup = function(){
			document.onmouseover = null;
		}
		//點擊關閉按鈕 隱藏盒子
		var box_close = document.getElementById('box_close');
		box_close.onclick = function(){
			box.style.display = 'none';
		}
	</script>
	
</body>
</html>
  • 效果顯示
    在這裏插入圖片描述

23.點擊彈出登錄窗口,拖拽窗口

  • 代碼如下:
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        .login-header {
            width: 100%;
            text-align: center;
            height: 30px;
            font-size: 24px;
            line-height: 30px;
        }
        ul, li, ol, dl, dt, dd, div, p, span, h1, h2, h3, h4, h5, h6, a {
            padding: 0px;
            margin: 0px;
        }
        .login {
            width: 512px;
            height: 280px;
            position: absolute;
            border: #ebebeb solid 1px;
            
            left: 50%;
            right: 50%;
            background: #ffffff;
            box-shadow: 0px 0px 20px #ddd;
            z-index: 9999;
            margin-left: -256px;
            margin-top: 140px;
            display: none;
        }
        .login-title {
            width: 100%;
            margin: 10px 0px 0px 0px;
            text-align: center;
            line-height: 40px;
            height: 40px;
            font-size: 18px;
            position: relative;
            cursor: move;
            -moz-user-select:none;
            -webkit-user-select:none;/*webkit瀏覽器*/
            -ms-user-select:none;/*IE10*/
            -khtml-user-select:none;/*早期瀏覽器*/
            user-select:none;
        }
        .login-input-content {
            margin-top: 20px;
        }
        .login-button {
            width: 50%;
            margin: 30px auto 0px auto;
            line-height: 40px;
            font-size: 14px;
            border: #ebebeb 1px solid;
            text-align: center;
        }
        .login-bg {
            width: 100%;
            height: 100%;
            position: fixed;
            top: 0px;
            left: 0px;
            background: #000000;
            filter: alpha(opacity=30);
            -moz-opacity: 0.3;
            -khtml-opacity: 0.3;
            opacity: 0.3;
            display: none;
        }
        a {
            text-decoration: none;
            color: #000000;
        }
        .login-button a {
            display: block;
        }
        .login-input input.list-input {
            float: left;
            line-height: 35px;
            height: 35px;
            width: 350px;
            border: #ebebeb 1px solid;
            text-indent: 5px;
        }
        .login-input {
            overflow: hidden;
            margin: 0px 0px 20px 0px;
        }
        .login-input label {
            float: left;
            width: 90px;
            padding-right: 10px;
            text-align: right;
            line-height: 35px;
            height: 35px;
            font-size: 14px;
        }
        .login-title span {
            position: absolute;
            font-size: 12px;
            right: -20px;
            top: -30px;
            background: #ffffff;
            border: #ebebeb solid 1px;
            width: 40px;
            height: 40px;
            border-radius: 20px;
        }
    </style>
</head> 
<body>
<div class="login-header"><a id="link" href="javascript:void(0);">點擊,彈出登錄框</a></div>
<div id="login" class="login" >
    <div id="title" class="login-title">登錄會員
        <span><a id="closeBtn" href="javascript:void(0);" class="close-login">關閉</a></span>
    </div>
    <div class="login-input-content">
        <div class="login-input">
            <label>用戶名:</label>
            <input type="text" placeholder="請輸入用戶名" name="info[username]" id="username" class="list-input">
        </div>
        <div class="login-input">
            <label>登錄密碼:</label>
            <input type="password" placeholder="請輸入登錄密碼" name="info[password]" id="password" class="list-input">
        </div>
    </div>
    <div id="loginBtn" class="login-button"><a href="javascript:void(0);" id="login-button-submit">登錄會員</a></div>
</div>
<!-- 遮蓋層 -->
<div id="bg" class="login-bg" ></div> 
	<script>
		//點擊按鈕 彈出登錄窗口
		var link = document.getElementById('link');
		link.onclick = function(){
			//顯示登錄框和遮蓋層
			var login = document.getElementById('login');
			var bg  =  document.getElementById('bg');

			login.style.display = 'block';
			bg.style.display = 'block';
			return false;
		}
		//點擊關閉按鈕 隱藏登錄界面
		var closeBtn = document.getElementById('closeBtn');
		closeBtn.onclick = function(){
			var login = document.getElementById('login');
			var bg  =  document.getElementById('bg');
			login.style.display = 'none';
			bg.style.display = 'none';
		}
		//遮蓋層的目的  突出顯示登錄窗口   蓋住其他位置不讓操作
		//2.拖拽功能實現
		var title = document.getElementById('title');
		var login = document.getElementById('login');
		//按下鼠標的時候
		title.onmousedown = function(e){
			e = e || window.event;
			//鼠標相對於盒子的位置 = 鼠標在頁面中的位置 - 盒子在頁面中的位置
			
			var x = e.pageX - login.offsetLeft;
			var y = e.pageY - login.offsetTop;

			//文檔移動的時候
			document.onmousemove = function(e){
				e = e || window.event;
				//盒子的位置 = 鼠標在頁面中的位置 - 鼠標在盒子中的位置
				var boxX = e.pageX - x;
				var boxY = e.pageY - y;

				login.style.left = boxX + 256 + 'px';
				login.style.top = boxY - 140 + 'px';

			}
			//鼠標鬆開的時候
			document.onmouseup = function(){
				document.onmousemove = null;
			}

		}
	</script>
</body>
</html>
  • 實現效果
    在這裏插入圖片描述

24.圖片放大鏡

  • 代碼部分
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>放大鏡</title>
	<style>
        * {
            margin: 0;
            padding: 0;
        }

        .box {
            width: 350px;
            height: 350px;
            margin: 100px;
            border: 1px solid #ccc;
            position: relative;
        }

        .big {
            width: 400px;
            height: 400px;
            position: absolute;
            top: 0;
            left: 360px;
            border: 1px solid #ccc;
            overflow: hidden;
            display: none;
        }

        .big img {
            position: absolute;
        }

        .mask {
            width: 175px;
            height: 175px;
            background: rgba(255, 255, 0, 0.4);
            position: absolute;
            top: 0px;
            left: 0px;
            cursor: move;
            display: none;
        }

        .small {
            position: relative;
        }

    </style>
</head>
<body>
	<div class="box" id="box">
		<div class="small">
			<img src="images/small.webp" width="350px" alt="">
			<div class="mask"></div>
		</div>
		<div class="big">
			<img src="images/big.jpg" width="800px" alt="">
		</div>
	</div>
	<script type="text/javascript" src="common.js"></script>
	<script type="text/javascript">
		var box = document.getElementById('box');
		var smallBox = box.children[0];
		var bigBox = box.children[1];

		var smallImage = smallBox.children[0];
		var mask = smallBox.children[1];
		var bigImage = bigBox.children[0];

		//1.鼠標經過的時候顯示mask和big 當鼠標離開box時隱藏mask和big
		smallBox.onmouseover = function(){
			mask.style.display = 'block';
			bigBox.style.display = 'block';

		}
		box.onmouseout = function(){
			mask.style.display = 'none';
			bigBox.style.display = 'none';
		}
		//2.當鼠標在盒子中移動的時候 讓mask和鼠標一起移動
		box.onmousemove = function(e){
			e = e || window.event;
			//鼠標相對於mask的位置 = 鼠標在頁面的位置 - 盒子的位置
			var maskX = getPage(e).pageX - box.offsetLeft;
    		var maskY = getPage(e).pageY - box.offsetTop;
    		//鼠標的位置出現在mask的中心點

    		maskX = maskX - mask.offsetWidth/2;
    		maskY = maskY - mask.offsetHeight/2;

    		//此時mask是在box中移動。因此要將mask限制住
    		maskX = maskX < 0 ? 0 : maskX;
    		maskY = maskY < 0 ? 0 : maskY;

    		maskX = maskX > box.offsetWidth - mask.offsetWidth ? box.offsetWidth - mask.offsetWidth : maskX;
    		maskY = maskY >box.offsetHeight -  mask.offsetHeight ? box.offsetHeight -  mask.offsetHeight :maskY;

			mask.style.left = maskX  + 'px';
    		mask.style.top = maskY  + 'px';
			//3.當mask移動的時候 讓大圖移動(根據比例)
			//mask移動距離/mask最大能夠移動的距離 = 大圖片移動的距離/大圖片最大能移動的距離
			//mask最大能夠移動的距離
			var maskMax =  box.offsetWidth - mask.offsetWidth;
			//大圖片最大能移動的距離
			var bigImageMax = bigImage.offsetWidth - bigBox.offsetWidth;
			var bigImageX = maskX * bigImageMax/maskMax;
			var bigImageY = maskY *bigImageMax/maskMax;

			bigImage.style.left = -bigImageX + 'px';
			bigImage.style.top = -bigImageY + 'px';

		}
		

	</script>
	
</body>
</html>
  • 實現效果
    在這裏插入圖片描述

25.模擬滾動條

  • 代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>模擬滾動條</title>
    <style>
        * {margin: 0;padding: 0;}
        .box {
            width: 300px;
            height: 500px;
            border: 1px solid red;
            margin: 100px;
            position: relative;

            overflow: hidden;

            /* 不讓文字被選中 */
            -webkit-user-select:none;
            -moz-user-select:none;
            -ms-user-select:none;
            user-select:none;
        }
        .content {
            padding: 5px 18px 5px 5px;
            position: absolute;
            top: 0;
            left: 0;

        }
        .scroll {
            width: 18px;
            height: 100%;
            position: absolute;
            top: 0;
            right: 0;
            background-color: #eee;
        }
        .bar {
            height: 100px;
            width: 100%;
            position: absolute;
            top: 0;
            left: 0;
            background-color: red;
            border-radius:  10px;
            cursor: pointer;
        }
    </style>
</head>
<body>
<div class="box" id="box">
    <div class="content" id="content">
       我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,我是文字內容,我是文字內
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,我是文字內容,我是文字內
		我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,我是文字內容,我是文字內
		我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,我是文字內容,我是文字內
		我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,我是文字內容,我是文字內
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,
        我是文字內容,我是文字內容,我是文字內容,我是文字內容,我是文字內

    </div>
    <div class="scroll" id="scroll">
        <div class="bar" id="bar"></div>
    </div>
</div>
<script src="common.js"></script>

	<script type="text/javascript">
	//1.根據內容的大小計算滾動條的高度
	var box = my$('box');
	var content = my$('content');
	var scroll = my$('scroll');
	var bar = my$('bar');
	//滾動條的高度/scroll的高度 = box的高度/內容的高度
	var barHeight = 0;
	if(content.scrollHeight > box.clientHeight){
		barHeight = box.clientHeight/content.scrollHeight*scroll.clientHeight;
	//注意 設置元素大小和位置時一定要帶單位
	
	}
	bar.style.height = barHeight + 'px';
	//2.讓滾動條能夠拖拽
	
	//先求bar在滾動條的位置 = 鼠標在頁面中的位置 - box的offsetTop距離
	bar.onmousedown = function(e){
		e = e || window.event;
		var y = getPage(e).pageY - bar.offsetTop - box.offsetTop;
		document.onmousemove = function(e){
			
		//當鼠標在頁面上移動的時候 求滾動條的位置
		
			//e = e || window.event;
			//求滾動條的位置
			var barY = getPage(e).pageY - y - box.offsetTop;
			//控制bar不能移除scroll
			barY = barY < 0 ? 0 : barY;
			barY = barY > scroll.clientHeight - bar.clientHeight ? scroll.clientHeight - bar.clientHeight : barY; 
			bar.style.top = barY + 'px';

			//3.當拖拽滾動條的時候 改變內容的位置
			//內容滾動的距離/內容最大能夠滾動的距離 = 滾動條滾動的距離/滾動條最大能夠滾動的距離
			//內容滾動的距離
			var contentMax = content.scrollHeight - box.clientHeight;
			//滾動條最大能夠滾動的距離
			var barMax = scroll.clientHeight - bar.clientHeight;
			var contentY = barY / barMax*contentMax;
			content.style.top = -contentY + 'px';

		}
	}
	document.onmouseup = function(){
		//移除鼠標移動的事件
		document.onmousemove = null;
	}
	
	</script>
	
</body>
</html>
  • 實現效果
    在這裏插入圖片描述

26.簡單動畫(改進)

20題存在問題:點擊button之後,滑塊開始運動,此時再點擊button滑塊速度會變化
原因在於再次點擊button後會再次啓動一個定時器
此處再進行升級改進,假設要控制不同的組件進行運動,因此要將函數進行封裝

  • 代碼如下
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>簡單動畫</title>
	<style type="text/css">
	body{
		margin: 0;
	}
	#box{
		position: relative;
		background-color: red;
		width: 100px;
		height: 100px;
	}
</style>
</head>
<body>
	<input type="button" id="btn" value="移動400">
	<input type="button" id="btn1" value="移動800">
	

	<div id="box"></div>
	<script type="text/javascript" src="common.js"></script>
	<script type="text/javascript">

		//獲取按鈕
		var btn = document.getElementById('btn');
		var btn1 = document.getElementById('btn1');

		var box = document.getElementById('box');
		var timerId = null
		//註冊點擊事件
		btn.onclick = function(){
	
			animate(box,400);
		}
		btn1.onclick = function(){
			animate(box,800);
			
		}
		//封裝動畫的函數
		//不僅要控制box 可能需要任何一個物體 所以需要參數element
		//元素移動的位置  需要target
		function animate(element,target){
			//保證頁面只有一個定時器在執行動畫
			if (timerId) {
				clearInterval(timerId);
				timerId = null;
			}
			//定時器
			timerId = setInterval(function(){
				//步進  每次移動的距離
				var step = 10;
				//最終盒子停止的位置
				//盒子當前的位置
				var current = element.offsetLeft;
				if (current >= target) {
					//定時器停止
					clearInterval(timerId);
					//讓盒子到target的位置
					element.style.left = target + 'px';
					//退出函數
					return;
				}
				current += step;
    		    element.style.left = current + 'px';
				//0.1秒執行一次
			},30);
		}
	</script>
</body>
</html>
  • 實現效果
    在這裏插入圖片描述
  • 改進 點擊button時,同時幾個box同時開始運動
    代碼加入


		btn.onclick = function(){
			animate(box,400);
			animate(box1,400);
			
		}
		btn1.onclick = function(){
			animate(box,800);
			animate(box1,800);
	
  • 執行效果
    在這裏插入圖片描述
  • 問題
    點擊一個button之後只有下面的box運動
    原因在於
    //在執行第二個函數的時候,相對應的前一個定時器會被銷燬
    //所以想讓每一個元素維護自己開啓的定時器
    需要將所有的timerID改爲element.timerID
  • 完整代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>簡單動畫</title>
	<style type="text/css">
	body{
		margin: 0;
	}
	#box{
		position: relative;
		background-color: red;
		width: 100px;
		height: 100px;
	}
	#box1{
		position: relative;
		background-color: blue;
		width: 100px;
		height: 100px;
	}
</style>
</head>
<body>
	<input type="button" id="btn" value="移動400">
	<input type="button" id="btn1" value="移動800">
	

	<div id="box"></div>
	<div id="box1"></div>
	
	<script type="text/javascript" src="common.js"></script>
	<script type="text/javascript">

		//獲取按鈕
		var btn = document.getElementById('btn');
		var btn1 = document.getElementById('btn1');

		var box = document.getElementById('box');
		//var timerId = null
		//註冊點擊事件
		btn.onclick = function(){
			animate(box,400);
			animate(box1,400);
			//在執行第二個函數的時候,相對應的前一個定時器會被銷燬
			//所以想讓每一個元素維護自己開啓的定時器
			
		}
		btn1.onclick = function(){
			animate(box,800);
			animate(box1,800);
			
		}
		//封裝動畫的函數
		//不僅要控制box 可能需要任何一個物體 所以需要參數element
		//元素移動的位置  需要target
		function animate(element,target){
			//保證頁面只有一個定時器在執行動畫
			if (element.timerId) {
				clearInterval(element.timerId);
				timerId = null;
			}
			//定時器
			element.timerId = setInterval(function(){
				//步進  每次移動的距離
				var step = 10;
				//最終盒子停止的位置
				//盒子當前的位置
				var current = element.offsetLeft;
				//當從400到800時執行動畫
				//當從800到400時沒有動畫直接跳轉
				if(current > target){
					step = - Math.abs(step);
				}
				if(Math.abs(current - target) < Math.abs(step))
				{
					//定時器停止
					clearInterval(element.timerId);
					//讓盒子到target的位置
					element.style.left = target + 'px';
					//退出函數
					return;
				}
				current += step;
    		    element.style.left = current + 'px';
				//0.1秒執行一次
			},30);
		}
	</script>
</body>
</html>
  • 執行效果如下:
    在這裏插入圖片描述

27.輪播圖

  • 代碼如下
    html部分
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>輪播圖</title>
	<link rel="stylesheet" href="css/style.css" />
</head>
<body>

	<div class="all" id='box'>
    <div class="screen">
        <ul>
            <li><img src="images/wf1.jpg" width="500" height="200"/></li>
            <li><img src="images/wf2.jpg" width="500" height="200"/></li>
            <li><img src="images/wf3.jpg" width="500" height="200"/></li>
            <li><img src="images/wf4.jpg" width="500" height="200"/></li>
            <li><img src="images/wf5.jpg" width="500" height="200"/></li>
        </ul>
        <ol>
        	

        </ol>
    </div>
    <div id="arr" ><span id="left">&lt;</span><span id="right">&gt;</span></div>
</div>
<script src="js/common.js"></script>
<script src="js/animate.js"></script>
<script type="text/javascript" src="js/index.js"></script>


	
</body>
</html>

css部分

* {
           padding: 0;
            margin: 0;
            list-style: none;
            border: 0;
        }

        .all {
            width: 500px;
            height: 200px;
            padding: 7px;
            border: 1px solid #ccc;
            margin: 100px auto;
            position: relative;
        }

        .screen {
            width: 500px;
            height: 200px;
            overflow: hidden;
            position: relative;
        }

        .screen li {
            width: 500px;
            height: 200px;
            overflow: hidden;
            float: left;
        }

        .screen ul {
            position: absolute;
            left: 0;
            top: 0px;
            width: 3000px;
        }

        .all ol {
            position: absolute;
            right: 10px;
            bottom: 10px;
            line-height: 20px;
            text-align: center;
        }

        .all ol li {
            float: left;
            width: 20px;
            height: 20px;
            background: #fff;
            border: 1px solid #ccc;
            margin-left: 10px;
            cursor: pointer;
        }

        .all ol li.current {
            background: yellow;
        }

        #arr {
            display: none;
            z-index: 1000;

        }

        #arr span {
            width: 40px;
            height: 40px;
            position: absolute;
            left: 5px;
            top: 50%;
            margin-top: -20px;
            background: #000;
            cursor: pointer;
            line-height: 40px;
            text-align: center;
            font-weight: bold;
            font-family: '黑體';
            font-size: 30px;
            color: #fff;
            opacity: 0.3;
            border: 1px solid #fff;
        }

        #arr #right {
            right: 5px;
            left: auto;
        }

common.js

function my$(id) {
  return document.getElementById(id);
}

// 處理瀏覽器兼容性
// 獲取第一個子元素
function getFirstElementChild(element) {
    var node, nodes = element.childNodes, i = 0;
    while (node = nodes[i++]) {
        if (node.nodeType === 1) {
            return node;
        }
    }
    return null;
}

// 處理瀏覽器兼容性
// 獲取下一個兄弟元素
 function getNextElementSibling(element) {
    var el = element;
    while (el = el.nextSibling) {
      if (el.nodeType === 1) {
          return el;
      }
    }
    return null;
  }


// 處理innerText和textContent的兼容性問題
// 設置標籤之間的內容
function setInnerText(element, content) {
  // 判斷當前瀏覽器是否支持 innerText
  if (typeof element.innerText === 'string') {
    element.innerText = content;
  } else {
    element.textContent = content;
  }
}



//處理註冊事件瀏覽器兼容性問題
function addEventListener(element,eventName,fn){
if(element.addEventListener){
	element.addEventListener(eventName,fn);
}else if(element.attachEvent){
	element.attachEvent('on' +eventName,fn);
}else{element['on' + eventName] = fn;
	}
}






//處理移除事件的兼容性處理
function removeEventListener(element,eventName,fn){
	if(element.removeEventListener){
		element.removeEventListener(eventName,fn);
	}else if(element.detachEvent){
		element.detachEvent('on'+ eventName,fn);
	}else{
		element['on' + eventName] = null;
	}
}
// 獲取頁面滾動距離的瀏覽器兼容性問題
// 獲取頁面滾動出去的距離
function getScroll() {
  var scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;
  var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
  return {
    scrollLeft: scrollLeft,
    scrollTop: scrollTop
  }
}

// 獲取鼠標在頁面的位置,處理瀏覽器兼容性
function getPage(e) {
  var pageX = e.pageX || e.clientX + getScroll().scrollLeft;
  var pageY = e.pageY || e.clientY + getScroll().scrollTop;
  return {
    pageX: pageX,
    pageY: pageY
  }
}


//格式化日期對象,返回yyyy-MM-dd HH:mm:ss的形式
function formatDate(date) {
  // 判斷參數date是否是日期對象
  // instanceof  instance 實例(對象)   of 的
  // console.log(date instanceof Date);
  if (!(date instanceof Date)) {
    console.error('date不是日期對象')
    return;
  }

  var year = date.getFullYear(),
      month = date.getMonth() + 1,
      day = date.getDate(),
      hour = date.getHours(),
      minute = date.getMinutes(),
      second = date.getSeconds();

  month = month < 10 ? '0' + month : month;
  day = day < 10 ? '0' + day : day;
  hour = hour < 10 ? '0' + hour : hour;
  minute = minute < 10 ? '0' + minute : minute;
  second = second < 10 ? '0' + second : second;

  return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;
}

// 獲取兩個日期的時間差
function getInterval(start, end) {
  // 兩個日期對象,相差的毫秒數
  var interval = end - start;
  // 求 相差的天數/小時數/分鐘數/秒數
  var day, hour, minute, second;

  // 兩個日期對象,相差的秒數
  // interval = interval / 1000;
  interval /= 1000;

  day = Math.round(interval / 60 / 60 / 24);
  hour = Math.round(interval / 60 / 60 % 24);
  minute = Math.round(interval / 60 % 60);
  second = Math.round(interval % 60);

  return {
    day: day,
    hour: hour,
    minute: minute,
    second: second
  }
}

animate.js

//功能:讓某個元素實現動畫
function animate(element, target) {
    //清除上一次創建的定時器
    if(element.timerId) {
        clearInterval(element.timerId);
    }
    //每次改變的值
    var step = 10;
    //開啓定時器
    element.timerId = setInterval(function () {
        //獲取當前的位置
        var current = element.offsetLeft;
        //當前位置 <  目標位置  + step
        //當前位置 > 目標位置   -step
        if(current > target) {
            step = - Math.abs(step);
        }
        if(Math.abs(current - target) < Math.abs(step)) {
            //清除定期器,切換到目標位置
            clearInterval(element.timerId);
            element.style.left = target + "px";
           return;
        }
         current += step;
        element.style.left = current + "px";
    }, 10);
}

index.js

//獲取元素
	var box = my$('box');
	var screen = box.children[0];
	var ul = screen.children[0];
	var ol = screen.children[1];
	var imgWidth = screen.offsetWidth;
	//箭頭
	var arr = my$('arr');
	var arrLeft = my$('left');
	var arrRight = my$('right');
	//1.動態生成序號(在ol中動態生成li)
	//獲取到頁面上有多少張圖片
	var count = ul.children.length;
	for(var i = 0;i<count;i++){
		var li = document.createElement('li');
		ol.appendChild(li);
		setInnerText(li,i+1);

		//2.點擊序號(給序號設置點擊事件) 動畫的方式 切換圖片
		li.onclick = liClick;
		//爲什麼寫成這樣而不寫成li.onclick = function(){}
		//在循環函數中,若循環一次則會存儲一次匿名函數,循環十次會存十個匿名函數,會浪費內存,因此只要定義一個命名函數即可
		//注意:不能在命名函數後面加上(),因爲加之後就變成函數的調用
		//如果用匿名函數,每觸發事件,都會調用不同的函數,而設置了命名函數,每觸發事件,只用調用所命名的那個函數,減少訪問服務器的次數
			//讓當前li記錄索引
		//設置標籤的自定義屬性
		li.setAttribute('index',i);
	}
	function liClick(){
	//處理序號高亮不變的問題
		//2.1 取消其它li高亮顯示,讓當前li高亮顯示
		for (var i = 0;i<ol.children.length;i++){
			var li = ol.children[i];
			li.className = '';

		}
		//讓當前高亮顯示
		this.className = 'current';
		//2.2點擊序號, 動畫的方式切換到當前點擊的圖片的位置
		//var imgWidth = screen.offsetWidth;
		//獲取自定義屬性(獲取圖片索引)
		var liIndex = parseInt(this.getAttribute('index'));
		animate(ul,-liIndex*imgWidth);
		//全局變量index和li中的index保持一致
		index = liIndex;
	}

	//讓序號1高亮顯示(li)
	ol.children[0].className = 'current';

	//3.鼠標放到盒子上顯示箭頭
	box.onmouseenter = function(){
		arr.style.display = 'block';
		//清除定時器
		clearInterval(timerId);
	}
	box.onmouseleave = function(){
		arr.style.display = 'none';
		//重新開啓定時器
		timerId = setInterval(function(){
			arrRight.click();
		},2000);
	}
	//4.實現上一張和下一張的功能
	//4.1先寫下一張
	var index = 0;//第一張圖片的索引
	arrRight.onclick = function(){
		//判斷是否是克隆的第一張圖片
		//若是需修改ul座標 顯示真正的第一張
		if(index == count){
			ul.style.left = '0px';
			index = 0;
		}
		//總共有5張圖片,但是還有一張克隆的圖片 所克隆的圖片的索引是5
		//如果是最後一張,不能index++
		//4 < 5
		index++;
		if(index < count){
		//animate(ul,-index*imgWidth);
		//獲取圖片對應的序號,讓序號點擊
			ol.children[index].click();
		}else{
			//以動畫的方式移動到克隆的第一張圖片
			animate(ul,-index*imgWidth);
			//取消所有序號的高亮顯示讓第一個序號高亮
		for (var i = 0;i<ol.children.length;i++){
			var li = ol.children[i];
			li.className = '';
		}
		ol.children[0].className = 'current';
		}
	}
	//4.2點擊上一張
	arrLeft.onclick = function(){
		//如果當前是第一張圖片, 此時要偷偷的切換到最後一張圖片的位置(即克隆的第一張圖片)
		if(index == 0){

			index = count;
			ul.style.left = -index*imgWidth + 'px';
		}
		index--;
		ol.children[index].click();
		//if(index > 0){
		//index--;
		//animate(ul,-index*imgWidth);
		//ol.children[index].click();
		//}
	}
	//無縫滾動
	//獲取ul中的第一個li
	var firstLi = ul.children[0];
	//克隆li cloneNode()  複製節點
	//參數 true 複製節點中的內容
	//     false 只是複製當前節點 不是複製裏面的內容
	var cloneLi = firstLi.cloneNode(true);
	ul.appendChild(cloneLi);
	
	//5.自動切換圖片
	var timerId = setInterval(function(){
		arrRight.click();
	},2000);

  • 實現效果
    不點擊時自動跳轉
    鼠標在box內顯示左右箭頭
    在這裏插入圖片描述

28.回到頂部

  • html部分
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>回到頂部</title>
	<link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body>
	<div id="wrap">
      <div id="top" class="header" data-reactid=".0.0">
          <div class="wrapper clearfix" data-reactid=".0.0.0"><a class="logo" href="/p/index.html" data-reactid=".0.0.0.0"></a>
              <div class="search-box" data-reactid=".0.0.0.1"><input type="text" value="" data-reactid=".0.0.0.1.0">
                      <div class="search-btn" data-reactid=".0.0.0.1.1"></div>
                      <div class="hot-words" data-reactid=".0.0.0.1.2"><a data-reactid=".0.0.0.1.2.$0">趣味測試</a><a data-reactid=".0.0.0.1.2.$1">魁拔</a><a data-reactid=".0.0.0.1.2.$2">迪麗熱巴</a>
                          <a
                              data-reactid=".0.0.0.1.2.$3">吳亦凡</a><a data-reactid=".0.0.0.1.2.$4">鹿晗</a></div>
                  </div>
                  <div class="user-wrapper" data-reactid=".0.0.0.2">
                      <div class="login-wrap" data-reactid=".0.0.0.2.0"><a class="btn-login" href="javascript:void(0)" data-reactid=".0.0.0.2.0.0">登錄</a></div>
                  </div>
                  <div class="links" data-reactid=".0.0.0.3">
                      <div class="slide-down-container admin-links" data-reactid=".0.0.0.3.1">
                          <div class="title" data-reactid=".0.0.0.3.1.0"><span data-reactid=".0.0.0.3.1.0.0"></span><span class="title-span" data-reactid=".0.0.0.3.1.0.1">部落管理</span>
                              <i
                                  class="slide-down-icon" data-reactid=".0.0.0.3.1.0.2"></i>
                          </div>
                          <ul class="slide-down-content" data-reactid=".0.0.0.3.1.1">
                              <li data-reactid=".0.0.0.3.1.1.$=10"><a target="_blank" href="/buluoadmin/home.html" data-reactid=".0.0.0.3.1.1.$=10.0">運營平臺</a></li>
                              <li
                                  data-reactid=".0.0.0.3.1.1.$=11"><a target="_blank" href="/apply.html" data-reactid=".0.0.0.3.1.1.$=11.0">創建部落</a></li>
                          </ul>
                      </div>
                      <div class="slide-down-container help-links" data-reactid=".0.0.0.3.2">
                          <div class="title" data-reactid=".0.0.0.3.2.0"><span data-reactid=".0.0.0.3.2.0.0"></span><span class="title-span" data-reactid=".0.0.0.3.2.0.1">幫助</span>
                              <i
                                  class="slide-down-icon" data-reactid=".0.0.0.3.2.0.2"></i>
                          </div>
                          <ul class="slide-down-content" data-reactid=".0.0.0.3.2.1">
                              <li data-reactid=".0.0.0.3.2.1.$=10"><a target="_blank" href="/tribe.html" data-reactid=".0.0.0.3.2.1.$=10.0">部落簡介</a></li>
                              <li data-reactid=".0.0.0.3.2.1.$=11"><a target="_blank" href="http://kf.qq.com/product/buluo.html" data-reactid=".0.0.0.3.2.1.$=11.0">幫助中心</a></li>
                          </ul>
                      </div>
                  </div>
              </div>
          </div>

      <div class="cls" id="content">
          <img src="images/content.png" width="100%">
      </div>
      http://buluo.qq.com/p/detail.html?bid=17266&pid=9498777-1455945612&from=grp_sub_obj
  </div>
    <div class="to-top" id="totop"></div>
	<script type="text/javascript" src="js/common.js"></script>
	<script type="text/javascript" src="js/index.js"></script>
</body>
</html>
  • css部分
* {
    margin: 0;
    padding: 0;
}
html {
    width: 100%;
    font-family: "Microsoft YaHei",-apple-system-font,"Helvetica Neue",Helvetica,STHeiTi,sans-serif;

}
.header {
    position: fixed;
    z-index: 20;
    left: 0;
    top: 0;
    height: 90px;
    width: 100%;
    background-color: #fff;
    transition: height .3s;
}

.header.fixed {
    height: 50px;
    box-shadow: 0 0 1px 0 rgba(0,0,0,.3),0 0 6px 2px rgba(0,0,0,.15);
}
.wrapper {
    width: 970px;
    margin: 0 auto;
}
.clearfix:after {
    display: table;
    clear: both;
    content: "";
}

.header .logo {
    float: left;
    margin: 0;
    width: 180px;
    margin-top: 21px;
    height: 34px;
    background-image: url(http://s.url.cn/qqun/xiaoqu/buluo/p/js/images/big_logo.a9bf2527b09314270250235300104630.png);
    background-repeat: no-repeat;
    transition: all .3s;
}
a {
    text-decoration: none;
    color: #000;
    background-color: transparent;
}
.header .search-box {
    float: left;
    margin-left: 25px;
    height: 30px;
    margin-top: 24px;
    transition: margin .3s;
}
.header .user-wrapper {
    margin-top: 32px;
}
.header .user-wrapper {
    float: right;
    transition: margin .3s;
}
.header .links {
    margin-top: 32px;
}
.slide-down-container {
    font-size: 12px;
    position: relative;
    z-index: 100;
    float: left;
    margin-right: 20px;
}
.slide-down-container .title {
    position: relative;
    cursor: pointer;
    padding-bottom: 10px;
}
.header .slide-down-container.help-links .slide-down-content {
    left: -32px;
}
.slide-down-container .slide-down-content {
    position: absolute;
    font-size: 12px;
    display: none;
    top: 20px;
    width: 88px;
    padding: 10px 0;
    margin-top: 7px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    background-color: #fff;
    border: 1px solid #dbdadf;
    box-shadow: 0 2px 6px 2px rgba(0,0,0,.17);
}
ul {
    list-style: none;
}
.header .search-box input {
    float: left;
    padding: 0;
    height: 28px;
    line-height: 28px;
    width: 340px;
    border: 1px solid #dfdfdf;
    border-radius: 2px;
    border-right: 0;
    padding-left: 10px;
    font-size: 14px;
}
.header .search-box div.search-btn {
    float: left;
    height: 30px;
    width: 64px;

    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAAM1BMVEUAAAD///////////////////////////////////////////////////////////////+3leKCAAAAEXRSTlMA/qkqH/KX4uEFmYxNSH9tY+SUvpEAAABVSURBVAjXZY1ZDoAwCEQZti5a9f6nNaUxBn0/k8cEICL1iupKi2GY2AhTA0sThkXfwTFm+IwCCRXUGUALbcCnzbs9XYY+fxcbBeoFxa/wl/3vR/bzBrf8Ab4Yi5q3AAAAAElFTkSuQmCC) center no-repeat #2786e4;
    cursor: pointer;
}
.header .search-box .hot-words {
    clear: left;
    transition: opacity .3s;
    padding-top: 10px;
    font-size: 12px;
}
.header .search-box .hot-words a {
    margin-right: 18px;
    cursor: pointer;
    color: #868686;
}
.slide-down-container .title .title-span {
    max-width: 100px;
    display: inline-block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.slide-down-container .title span {
    position: relative;
    vertical-align: middle;
}
.slide-down-container .title {
    position: relative;
    cursor: pointer;
    padding-bottom: 10px;
}
.slide-down-container {
    font-size: 12px;
    position: relative;
    z-index: 100;
    float: left;
    margin-right: 20px;
}
body {
    background: #ecebf0 url(http://s.url.cn/qqun/xiaoqu/buluo/p/js/images/bg.019aa429f71b955278687d76ea4c0951.jpg) no-repeat center center fixed;
}
.slide-down-container .title .slide-down-icon {
    display: inline-block;
    margin-left: 5px;
    margin-top: 1px;
    width: 5px;
    height: 5px;
    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAGCAYAAAAVMmT4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3FpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNTNmYWU4Mi01YzUwLWM5NDctYjFiNC0yNjBkNDNkZTNiMzgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDkzRjNDQUQ0MUEyMTFFNTg5OUNDM0EzRkU2MjVBMjgiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDkzRjNDQUM0MUEyMTFFNTg5OUNDM0EzRkU2MjVBMjgiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA1M2ZhZTgyLTVjNTAtYzk0Ny1iMWI0LTI2MGQ0M2RlM2IzOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowNTNmYWU4Mi01YzUwLWM5NDctYjFiNC0yNjBkNDNkZTNiMzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7rM0xpAAAAlElEQVR42mJkYGAIBuIbpaWlVxlwgO7ubjUgpc4MJH4AcdCxY8e+WFtbv8CiUBtIBQDxESagifeBjKVA7A6UMEdTaACkfIF4JVDdLSaQIJDxGEgtAmI7oAJbqEIzkAFAvARqIAMz0GqwKUD6C9Apt4BMbyANciPI+kVAhc9gNjEhWwuUeAOk5oEMAeL5QD6KHwACDACYkDOP6HW2qAAAAABJRU5ErkJggg==) center no-repeat;
    vertical-align: middle;
}
.login-wrap {
    font-size: 12px;
    margin-left: 4px;
}
.login-wrap .btn-login {
    display: inline-block;
    text-decoration: none;
    color: inherit;
    cursor: pointer;
    line-height: 18px;
    height: 18px;
}
.header .links {
    margin-top: 32px;
}
.header .links, .header .user-wrapper {
    float: right;
    transition: margin .3s;
}

#wrap {
    width: 100%;
}
.cls {
    width: 70%;
    margin: 100px auto 0px auto;
}
.header.fixed .hot-words {
    opacity: 0;
    -ms-filter: "alpha(Opacity=0)";
    pointer-events: none;
}
.header.fixed .links, .header.fixed .user-wrapper {
    margin-top: 15px;
}
.header.fixed .logo {
    background-image: url(http://s.url.cn/qqun/xiaoqu/buluo/p/js/images/small_logo.e402407a1c2d949e81207e68ff99b556.png);
    width: 165px;
    height: 30px;
    margin-top: 10px;
}
.header.fixed .search-box {
    margin-top: 10px;
}

 .to-top {
    width: 50px;
    height: 50px;
    background-image: url(http://s.url.cn/qqun/xiaoqu/buluo/p/js/images/to_top.6a40e92f2a02f3945477ff9937f5cb20.png);
    background-repeat: no-repeat;
    background-position: 0 0;
    background-size: 50px 50px;
    cursor: pointer;
    display: none;
     position: fixed;
     bottom: 150px;
     left: 86%;
}

  • index.js部分
//獲取元素
var Bodytop = my$('top');
//回到頂部的按鈕
var totop = my$('totop');
//當拖動滾動條的時候執行
window.onscroll = function(){
	//1.當拖動滾動條的時候,當內容滾動出去10px的時候. 
	//改變top的高度並且顯示回到頂部的按鈕
	//調用common.js中的getScroll()函數來獲取滾動出去的距離
	var scrollTop = getScroll().scrollTop;
	if(scrollTop > 10){
		//改變top
		Bodytop.className = 'header fixed';
		//顯示回到頂部
		totop.style.display = 'block';
	}else{
		//改變top
		Bodytop.className = 'header';
		//顯示回到頂部
		totop.style.display = 'none';

	}
	//如何獲得滾動的距離
	// document.body.scrollTop 
}
	//2.當點擊回到頂部按鈕的時候,動畫的方式回到最上面,使得滾動距離爲0
	var timerId = null;
	totop.onclick = function(){
		if(timerId){
			clearInterval(timerId);
			timerId = null;
		}
		timerId = setInterval(function(){
			//步進
			var step = 5;
			//目標位置
			var target = 0;
			//獲取當前位置
			var current = getScroll().scrollTop;
			if(current>target){
				step = -Math.abs(step);
			}
			//判斷當前是否到達目標位置
			if(Math.abs(current-target)<=Math.abs(step)){
				clearInterval(timerId);
				document.body.scrollTop = target;//已默認單位爲像素
				document.documentElement.scrollTop = target;
				return;
			}
			current+=step;
			document.body.scrollTop = target;//已默認單位爲像素
			document.documentElement.scrollTop = target;
		},30);
	}
  • common.js部分
function my$(id) {
  return document.getElementById(id);
}

// 處理瀏覽器兼容性
// 獲取第一個子元素
function getFirstElementChild(element) {
    var node, nodes = element.childNodes, i = 0;
    while (node = nodes[i++]) {
        if (node.nodeType === 1) {
            return node;
        }
    }
    return null;
}

// 處理瀏覽器兼容性
// 獲取下一個兄弟元素
 function getNextElementSibling(element) {
    var el = element;
    while (el = el.nextSibling) {
      if (el.nodeType === 1) {
          return el;
      }
    }
    return null;
  }


// 處理innerText和textContent的兼容性問題
// 設置標籤之間的內容
function setInnerText(element, content) {
  // 判斷當前瀏覽器是否支持 innerText
  if (typeof element.innerText === 'string') {
    element.innerText = content;
  } else {
    element.textContent = content;
  }
}

// 處理註冊事件的兼容性問題
// eventName, 不帶on,  click  mouseover  mouseout
function addEventListener(element, eventName, fn) {
  // 判斷當前瀏覽器是否支持addEventListener 方法
  if (element.addEventListener) {
    element.addEventListener(eventName, fn);  // 第三個參數 默認是false
  } else if (element.attachEvent) {
    element.attachEvent('on' + eventName, fn);
  } else {
    // 相當於 element.onclick = fn;
    element['on' + eventName] = fn;
  }
}

// 處理移除事件的兼容性處理
function removeEventListener(element, eventName, fn) {
  if (element.removeEventListener) {
    element.removeEventListener(eventName, fn);
  } else if (element.detachEvent) {
    element.detachEvent('on' + eventName, fn);
  } else {
    element['on' + eventName] = null;
  }
}

// 獲取頁面滾動距離的瀏覽器兼容性問題
// 獲取頁面滾動出去的距離
function getScroll() {
  var scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;
  var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
  return {
    scrollLeft: scrollLeft,
    scrollTop: scrollTop
  }
}

// 獲取鼠標在頁面的位置,處理瀏覽器兼容性
function getPage(e) {
  var pageX = e.pageX || e.clientX + getScroll().scrollLeft;
  var pageY = e.pageY || e.clientY + getScroll().scrollTop;
  return {
    pageX: pageX,
    pageY: pageY
  }
}


//格式化日期對象,返回yyyy-MM-dd HH:mm:ss的形式
function formatDate(date) {
  // 判斷參數date是否是日期對象
  // instanceof  instance 實例(對象)   of 的
  // console.log(date instanceof Date);
  if (!(date instanceof Date)) {
    console.error('date不是日期對象')
    return;
  }

  var year = date.getFullYear(),
      month = date.getMonth() + 1,
      day = date.getDate(),
      hour = date.getHours(),
      minute = date.getMinutes(),
      second = date.getSeconds();

  month = month < 10 ? '0' + month : month;
  day = day < 10 ? '0' + day : day;
  hour = hour < 10 ? '0' + hour : hour;
  minute = minute < 10 ? '0' + minute : minute;
  second = second < 10 ? '0' + second : second;

  return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;
}

// 獲取兩個日期的時間差
function getInterval(start, end) {
  // 兩個日期對象,相差的毫秒數
  var interval = end - start;
  // 求 相差的天數/小時數/分鐘數/秒數
  var day, hour, minute, second;

  // 兩個日期對象,相差的秒數
  // interval = interval / 1000;
  interval /= 1000;

  day = Math.round(interval / 60 / 60 / 24);
  hour = Math.round(interval / 60 / 60 % 24);
  minute = Math.round(interval / 60 % 60);
  second = Math.round(interval % 60);

  return {
    day: day,
    hour: hour,
    minute: minute,
    second: second
  }
}


  • 實現效果
    在這裏插入圖片描述

29.迷你微信聊天案例

  • html部分
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
	<div id="container">
		<div class="header">
			<span style="float: right;">20:30</span> 
			<span style="float: left;">小澤老師</span> 
		</div>

		<ul class="content"></ul>

		<div class="footer">
			<div class="icon"> 
				<img src="images/1.png" alt="" id="icon"> 
			</div>
			<input id="text" type="text" placeholder="說點什麼吧..."> 
			<span id="btn">發送</span> 
		</div>
	</div>
	<script type="text/javascript" src="js/index.js"></script>
	
</body>
</html>
  • css部分
* {
			margin: 0;
			padding: 0;
			list-style: none;
			font-family: '微軟雅黑'
		}

		#container {
			width: 450px;
			height: 600px;
			background: #eee;
			margin: 10px auto 0;
			position: relative;
			box-shadow: 0px 0px 16px #999;
		}

		.header {
			background: #000;
			height: 34px;
			color: #fff;
			height: 40px;
			line-height: 40px;
			font-size: 20px;
			padding: 0 10px;
		}

		.footer {
			width: 430px;
			height: 40px;
			background: #999;
			position: absolute;
			bottom: 0;
			padding: 10px;
		}

		.footer input {
			width: 300px;
			height: 38px;
			outline: none;
			font-size: 16px;
			text-indent: 10px;
			position: absolute;
			border-radius: 6px;
			right: 80px;
		}

		.footer span {
			display: inline-block;
			width: 62px;
			height: 38px;
			background: #ccc;
			font-weight: 900;
			line-height: 38px;
			cursor: pointer;
			text-align: center;
			position: absolute;
			right: 10px;
			top: 14px;
			border-radius: 6px;
		}

		.footer span:hover {
			color: #777;
			background: #ddd;
		}

		.icon {
			display: inline-block;
			background: red;
			width: 50px;
			height: 50px;
			border-radius: 30px;
			position: absolute;
			bottom: 3px;
			left: 10px;
			cursor: pointer;
			overflow: hidden;
		}

		img {
			width: 60px;
			height: 60px;
			border-radius: 8px;
		}

		.content {
			font-size: 20px;
			width: 435px;
			height: 662px;
			overflow: auto;
			padding: 5px;
		}

		.content li {
			margin-top: 10px;
			padding-left: 10px;
			width: 412px;
			display: block;
			clear: both;
			overflow: hidden;
		}

		.content li img {
			float: left;
		}

		.content li span {
			background: #7cfc00;
			padding: 10px;
			border-radius: 10px;
			float: left;
			margin: 6px 10px 0 10px;
			max-width: 310px;
			border: 1px solid #ccc;
			box-shadow: 0 0 3px #ccc;
		}

		.content li img.imgleft {
			float: left;
		}

		.content li img.imgright {
			float: right;
		}

		.content li span.spanleft {
			float: left;
			background: #fff;
		}

		.content li span.spanright {
			float: right;
			background: #7cfc00;
		}
  • js部分
//1.點擊圖片實現用戶切換功能
//獲取圖片
//1.1默認兩個用戶,通過點擊來回切換
var img = document.getElementById('icon');
var arr = ["images/1.png","images/2.png"];
var flag = 0;
img.onclick = function(){
	if (flag == 0) {
		img.src = arr[1];
		flag = 1;
	}else if(flag ==1 ){
		img.src = arr[0];
		flag = 0;
	}
}

//2.點擊發送按鈕,把用戶的聊天內容展示在聊天區域
//註冊點擊事件
var btn = document.getElementById('btn');
var num = -1;//統計聊天記錄
btn.onclick = function(){
	//判斷用戶內容是否爲空
	var text = document.getElementById('text').value;
	if(text == ''){
		alert('請輸入聊天內容');
	}else{
	//把內容添加到區域內
		var content = document.getElementsByTagName('ul')[0];
		content.innerHTML += "<li><img src='"+arr[flag]+"' /><span>"+text+"</span></li>"

	}
	var imgs = content.getElementsByTagName('img');
	var span = content.getElementsByTagName('span');
	num++;
	//判斷當前聊天的用戶
	if(flag == 0){
		imgs[num].className = 'imgleft';
		span[num].className = 'spanleft';
	}else{
		imgs[num].className = 'imgright';
		span[num].className = 'spanright';
	}

document.getElementById('text').value = '';
}
//text.value = '';
//2.1點擊發送按鈕,把聊天內容展示在聊天區域
//2.2設定聊天區域內不同的位置顯示
  • 實現效果
    在這裏插入圖片描述

30.隨機生成小色塊

  • html部分
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>隨機生成方塊</title>
	<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
	<div id="container"></div>
	<script src="js/tools.js"></script>
	<script src="js/box.js"></script>
	<script src="js/main.js"></script>
	<script>
		//console.log(tools.getRandom(1,10));
		//var parent = document.getElementById('container');
	//	var box1 = new Box(parent);
		//隨機生成方塊的座標
		//box1.random();
	</script>
</body>
</html>
  • css部分:
#container{
	width: 800px;
	height: 600px;
	background-color: lightgray;
	position: relative;
}
  • box.js部分
function Box(parent,options){
	options = options || {};
	//表示  如果對方傳過來是options對象,直接返回該對象,
	//如果沒有返回該對象,此時變量的值是undefined,若是undefined,返回的布爾類型
	//是false,會返回空對象(防止對象出問題)
	
	
	//方塊所具備的屬性
	this.backgroundColor = options.backgroundColor || 'red';
	this.width = options.width || 20;
	this.height = options.height || 20;
	this.x = options.x || 0;
	this.y = options.y || 0;
	//創建對應的div
	this.div = document.createElement('div');//將div設置屬性,那麼div就可以在init方法中被調用
	parent.appendChild(this.div);
	this.parent = parent;
	//設置div的樣式
	this.init();
}
	//初始化div的樣式
Box.prototype.init = function(){
	var div = this.div;
	div.style.backgroundColor = this.backgroundColor;
	div.style.height = this.height +'px';
	div.style.width = this.width +'px';
	div.style.left = this.x + 'px';
	div.style.top = this.y + 'px';

	//脫離文檔流
	div.style.position = 'absolute';


}

//讓box能夠生成隨機方塊的位置
Box.prototype.random = function(){
	//父容器的寬度/方塊的寬度,就能知道能放多少方塊
	var x = Tools.getRandom(0,this.parent.offsetWidth/this.width - 1)*this.width;
	var y = Tools.getRandom(0,this.parent.offsetHeight/this.height - 1)*this.height;

	this.div.style.left = x + 'px';
	this.div.style.top = y + 'px';

	
}
  • main.js
//生成10個方塊 並隨機生成顏色
var container = document.getElementById('container');

//數組存儲創建的方塊
var array = [];
for(var i = 0;i<10;i++){
	var r = Tools.getRandom(0,255);
	var g = Tools.getRandom(0,255);
	var b = Tools.getRandom(0,255);


	var box = new Box(container,{
		backgroundColor:'rgb('+r+','+g+','+ b +')'
	});
	//把創建好的方塊添加到數組中
	array.push(box);
}

//設置隨機位置,開啓定時器
setInterval(randomBox,500);
//頁面加載完成,先設置隨機位置
randomBox();
function randomBox(){
		//隨機生成方塊的座標
	for(var i = 0;i<array.length;i++)	{
		var box = array[i];
		box.random();
	}
}

  • box.js
var Tools = {
  getRandom: function (min, max) {
    return Math.floor(Math.random() * (max - min + 1)) +  min;
  }
}
  • 實現效果:
    在這裏插入圖片描述
    ####31.使用閉包改字體
    閉包:在一個作用域中訪問另一個作用域的變量
  • 代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>改字體</title>
</head>
<body>
	字體這麼大
	<button id="btn1">按鈕1</button>
	<button id="btn2">按鈕2</button>
	<button id="btn3">按鈕3</button>
<script type="text/javascript">
	var btn1 = document.getElementById('btn1');
	var btn2 = document.getElementById('btn2');
	var btn3 = document.getElementById('btn3');
//創建一個函數
function makeFun(size){
	return function(){
		document.body.style.fontSize = size+'px';
	}
}
btn1.onclick = makeFun(12);
btn2.onclick = makeFun(16);
btn3.onclick = makeFun(18);

</script>
</body>
</html>

效果如下:
在這裏插入圖片描述

33.使用正則表達式進行表單驗證

  • 代碼如下
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>正則表達式</title>
</head>
<body>
	QQ號:<input type="text" id="txtQQ"><span></span><br>
    郵箱:<input type="text" id="txtEMail"><span></span><br>
    手機:<input type="text" id="txtPhone"><span></span><br>
    生日:<input type="text" id="txtBirthday"><span></span><br>
    姓名:<input type="text" id="txtName"><span></span><br>
	<script type="text/javascript">
		//驗證郵編  ^[1-9]\d{5}$      ——100010
		//驗證電話號碼  ^[1-9]\d{10}$
		//驗證日期    ^\d{4}-d{1,2}-d{1,2}$   ——2103-2-3
		//驗證郵箱      \w+@\w+(\.\w+)     ——[email protected]     ——\w表示任意多數字字母下劃線;()表示可以出現多次
		//									
		

		//驗證QQ
		addCheck('txtQQ',/^\d{5,12}$/,'請輸入正確的QQ格式');
		//驗證郵箱
		addCheck('txtEMail',/^\w+@\W+(\>\W+)+$/);
		 // 3 手機號
      addCheck('txtPhone', /^[1-9]\d{10}$/, '請輸入正確的手機號碼格式');
      // 4 驗證日期
      addCheck('txtBirthday', /^\d{4}-\d{1,2}-\d{1,2}$/, '請輸入正確的日期格式')
      // 5 驗證姓名
      addCheck('txtName', /^[\u4e00-\u9fa5]{2,4}$/, '請輸入2-4個漢字')

		//將文本框的驗證封裝成一個函數
		//第一個參數是元素的ID
		//第二個參數是正則表達式對象RegExp
		//第三個參數是提示的文本
		function addCheck(elementID,reg,tip){
			var element = document.getElementById(elementID);
			element.onblur = function(){
			var span = this.nextElementSibling;//下一個兄弟元素
					if (!reg.test(this.value)) {
					//若不匹配 文本框後面的span中給出相應的提示
					span.innerText = tip;
					span.style.color = 'red';
				}else{
					span.innerText = '';
					span.style.color = '';
				}
			}
		}
	</script>
</body>
</html>

在這裏插入圖片描述

jQuery學習

1.點擊按鈕,改變p標籤內容

<!DOCTYPE html>
<html lang="en" class="">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<script type="text/javascript" src="jquery-1.12.2.js"></script>
	<input type="button" value="設置內容" id="btn">
	<p>1</p>
	<p>12</p>
	<p>134</p>
	<p>154</p>
	<script type="text/javascript">
		//頁面加載事件
	$(function(){
		//獲取點擊按鈕
		$('#btn').click(function(){
			//獲取所有的p標籤
			$('p').text('我們都是P標籤');
		});
	});
	</script>
</body>
</html>
  • 效果顯示
    在這裏插入圖片描述

2.下拉菜單

  • 代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>下拉菜單</title>
	<script type="text/javascript" src="jquery-1.12.2.js"></script>
</head>
<body>
<div class="wrap">
	<ul>
		<li>
			<a href="javascript:void(0);">帥哥</a>
			<ul>
				<li>
					<a href="javascript:void(0)">魏大勳</a>
					<a href="javascript:void(0)">王大陸</a>
					<a href="javascript:void(0)">陳偉霆</a>
				</li>
				<li></li>
				<li></li>

			</ul>
		</li>
		<li>
			<a href="javascript:void(0);">美女</a>
			<ul>
				<li>
					<a href="javascript:void(0)">謝娜</a>
					<a href="javascript:void(0)">吳昕</a>
					<a href="javascript:void(0)">歐陽娜娜</a>
				</li>
				<li></li>
				<li></li>

			</ul>
		</li>
		<li>
			<a href="javascript:void(0);">實力派</a>
			<ul>
				<li>
					<a href="javascript:void(0)">陳寶國</a>
					<a href="javascript:void(0)">陳道明</a>
					<a href="javascript:void(0)">宋丹丹</a>
				</li>
				<li></li>
				<li></li>

			</ul>
		</li>
	</ul>
</div>
<style type="text/css">
        * {
            margin: 0;
            padding: 0;
        }

        ul {
            list-style: none;
        }

        .wrap {
            width: 330px;
            height: 30px;
            margin: 100px auto 0;
            padding-left: 10px;
            background-image: url(images/bg.jpg);
        }

        .wrap li{
            background-image: url(images/libg.jpg);
        }

        .wrap > ul > li {
            float: left;
            margin-right: 10px;
            position: relative;
        }

        .wrap a {
            display: block;
            height: 30px;
            width: 100px;
            text-decoration: none;
            color: #000;
            line-height: 30px;
            text-align: center;
        }

        .wrap li ul {
            position: absolute;
            top: 30px;
            display: none;
        }

    </style>
<script type="text/javascript">
	//頁面加載
	$(function(){
		//鼠標放在ul下的a元素上出現ul下面的三個li
		$('.wrap>ul>li').mouseover(function(){
			$(this).children('ul').show();
		});
		$('.wrap>ul>li').mouseout(function(){
			$(this).children('ul').hide();
		});
	});
</script>	
</body>
</html>
  • 顯示效果
    在這裏插入圖片描述

3.精品服裝展示

  • 代碼如下:
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
            font-size: 12px;
        }

        ul {
            list-style: none;
        }

        a {
            text-decoration: none;
        }

        .wrapper {
            width: 298px;
            height: 248px;
            margin: 100px auto 0;
            border: 1px solid pink;
            overflow: hidden;
        }

        #left, #center, #right {
            float: left;
        }

        #left li, #right li {
            background: url(images/lili.jpg) repeat-x;
        }

        #left li a, #right li a {
            display: block;
            width: 48px;
            height: 27px;
            border-bottom: 1px solid pink;
            line-height: 27px;
            text-align: center;
            color: black;
        }

        #left li a:hover, #right li a:hover {
            background-image: url(images/abg.gif);
        }

        #center {
            border-left: 1px solid pink;
            border-right: 1px solid pink;
        }
    </style>
    <script src="jquery-1.12.2.js"></script>
    
</head>
<body>
<div class="wrapper">
    <ul id="left">
        <li><a href="#">女靴</a></li>
        <li><a href="#">雪地靴</a></li>
        <li><a href="#">冬裙</a></li>
        <li><a href="#">呢大衣</a></li>
        <li><a href="#">毛衣</a></li>
        <li><a href="#">棉服</a></li>
        <li><a href="#">女褲</a></li>
        <li><a href="#">羽絨服</a></li>
        <li><a href="#">牛仔褲</a></li>
    </ul>
    <ul id="center">
        <li><a href="#"><img src="images/女靴.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/雪地靴.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/冬裙.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/呢大衣.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/毛衣.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/棉服.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/女褲.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/羽絨服.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/牛仔褲.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/女包.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/男包.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/登山鞋.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/皮帶.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/圍巾.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/皮衣.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/男毛衣.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/男棉服.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/男靴.jpg" width="200" height="250"/></a></li>
    </ul>
    <ul id="right">
        <li><a href="#">女包</a></li>
        <li><a href="#">男包</a></li>
        <li><a href="#">登山鞋</a></li>
        <li><a href="#">皮帶</a></li>
        <li><a href="#">圍巾</a></li>
        <li><a href="#">皮衣</a></li>
        <li><a href="#">男毛衣</a></li>
        <li><a href="#">男棉服</a></li>
        <li><a href="#">男靴</a></li>
    </ul>




    <p></p>
    <span></span>
    <span></span>
    <p></p>
    <span></span>
</div>
<script>
    $(function(){
        $('#left>li').mouseover(function(){
            var index = $(this).index();
            $('#center>li:eq('+index+')').show();
            $('#center>li:eq('+index+')').siblings('li').hide();//當前元素的所有兄弟元素

        });
        $('#right>li').mouseover(function(){
            var index = $(this).index()+9;
            $('#center>li:eq('+index+')').show();
            $('#center>li:eq('+index+')').siblings('li').hide();//當前元素的所有兄弟元素

        });
    });    
    </script>
</body>
</html>
  • 顯示效果
    在這裏插入圖片描述

4.突出顯示

  • 代碼如下
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
        }

        ul {
            list-style: none;
        }

        body {
            background: #000;
        }

        .wrap {
            margin: 100px auto 0;
            width: 630px;
            height: 394px;
            padding: 10px 0 0 10px;
            background: #000;
            overflow: hidden;
            border: 1px solid #fff;
        }

        .wrap li {
            float: left;
            margin: 0 10px 10px 0;

        }

        .wrap img {
            display: block;
            border: 0;
        }
    </style>
    <script src="jquery-1.12.2.js"></script>
    <script>
        $(function () {
        	$(".wrap>ul>li").mouseover(function(){
        		
        		$(this).siblings("li").css("opacity",0.5);
        		$(this).css("opacity",1)
        	});
        	$(".wrap").mouseout(function(){
        		//.find針對當前的元素裏面找以下其他的元素
        		$(this).find("li").css("opacity",1)
        	});
      });
    </script>
</head>
<body>
<div class="wrap">
    <ul>
        <li><a href="#"><img src="images/01.jpg" alt=""/></a></li>
        <li><a href="#"><img src="images/02.jpg" alt=""/></a></li>
        <li><a href="#"><img src="images/03.jpg" alt=""/></a></li>
        <li><a href="#"><img src="images/04.jpg" alt=""/></a></li>
        <li><a href="#"><img src="images/05.jpg" alt=""/></a></li>
        <li><a href="#"><img src="images/06.jpg" alt=""/></a></li>
    </ul>
</div>
</body>
</html>
  • 效果顯示
    在這裏插入圖片描述

5.手風琴案例

  • 代碼顯示
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        ul {
            list-style: none
        }

        * {
            margin: 0;
            padding: 0;
        }

        div {
            width: 1150px;
            height: 400px;
            margin: 50px auto;
            border: 1px solid red;
            overflow: hidden;
        }

        div li {
            width: 240px;
            height: 400px;
            float: left;
        }

        div ul {
            width: 1300px;
        }


    </style>
    <script src="jquery-1.12.2.js"></script>
    <script>
    	$(function(){
    		$('#box>ul>li').mouseover(function(){
    			//將當前li的所有兄弟元素li的寬度設置一下
    			$(this).siblings('li').css("width","100px");
    			$(this).css('width','800px');
    		});
    		$('#box>ul>li').mouseout(function(){
    			//將當前li的所有兄弟元素li的寬度設置一下
    			$(this).siblings('li').css("width","240px");
    			$(this).css('width','240px');
    		});
    	});
    </script>
</head>
<body>
<div id="box">
    <ul>
        <li><img src="images/1.jpg"/></li>
        <li><img src="images/2.jpg"/></li>
        <li><img src="images/3.jpg"/></li>
        <li><img src="images/4.jpg"/></li>
        <li><img src="images/5.jpg"/></li>
    </ul>
</div>
</body>
</html>

  • 效果顯示
    在這裏插入圖片描述

5.開關燈案例

  • 代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>開關燈</title>
</head>
<body>
	<style type="text/css">
	.cls{
		background-color: black;
	}
</style>
	<script type="text/javascript" src="jquery-1.12.2.js"></script>
	<input id="btn" type="button" value="開關燈" />
	<script type="text/javascript">
		$(function(){
			$('#btn').click(function(){
				//判斷當前是否是應用類樣式
				if ($('body').hasClass('cls')) {
					//有應用該樣式
					$('body').removeClass('cls');
				}else{
					$('body').addClass('cls');

				}
			})
		})

	</script>
</body>
</html>
  • 簡便方法寫
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>開關燈</title>
</head>
<body>
	<style type="text/css">
	.cls{
		background-color: black;
	}
</style>
	<script type="text/javascript" src="jquery-1.12.2.js"></script>
	<input id="btn" type="button" value="開關燈" />
	<script type="text/javascript">
	
		//換一種方法:toggleClass()——切換樣式
		$(function(){
			$('#btn').click(function(){
				$('body').toggleClass('cls');
			})
		})
	</script>
</body>
</html>
  • 實現效果
    在這裏插入圖片描述

6.產品切換案例

  • 代碼如下
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
        }
        ul {
            list-style: none;
        }
        .wrapper {
            width: 1000px;
            height: 475px;
            margin: 0 auto;
            margin-top: 100px;
        }

        .tab {
            border: 1px solid #ddd;
            border-bottom: 0;
            height: 36px;
            width: 320px;
        }

        .tab li {
            position: relative;
            float: left;
            width: 80px;
            height: 34px;
            line-height: 34px;
            text-align: center;
            cursor: pointer;
            border-top: 4px solid #fff;
        }

        .tab span {
            position: absolute;
            right: 0;
            top: 10px;
            background: #ddd;
            width: 1px;
            height: 14px;
            overflow: hidden;
        }

        .products {
            width: 1002px;
            border: 1px solid #ddd;
            height: 476px;
        }

        .products .main {
            float: left;
            display: none;
        }

        .products .main.selected {
            display: block;
        }

        .tab li.active {
            border-color: red;
            border-bottom: 0;
        }

    </style>
    <script src="jquery-1.12.2.js"></script>
    <script>
        $(function () {
            //獲取ul中的所有的li,調用鼠標進入的事件
            $('.tab>li').mouseover(function(){
                //移除當前的li的所有兄弟元素li的類樣式
               $(this).siblings('li').removeClass('active');
                //讓當前li添加類樣式
                $(this).addClass('active');
                //獲取當前的li的索引
                var index = $(this).index();
                //獲取div中對應的索引的這個div,讓這個div的所有的兄弟元素div全部移除selected類樣式,讓當前對應的div(索引對應)應用selected類樣式
                $('.products>div:eq('+index+')').siblings('div').removeClass('selected');
                //當前對應的div添加類樣式
                $('.products>div:eq('+index+')').addClass('selected')
            });
        });
    </script>
</head>
<body>
<div class="wrapper">
    <ul class="tab">
        <li class="tab-item active">國際大牌<span></span></li>
        <li class="tab-item">國妝名牌<span></span></li>
        <li class="tab-item">清潔用品<span></span></li>
        <li class="tab-item">男士精品</li>
    </ul>
    <div class="products">
        <div class="main selected">
            <a href="###"><img src="imgs/guojidapai.jpg" alt=""/></a>
        </div>
        <div class="main">
            <a href="###"><img src="imgs/guozhuangmingpin.jpg" alt=""/></a>
        </div>
        <div class="main">
            <a href="###"><img src="imgs/qingjieyongpin.jpg" alt=""/></a>
        </div>
        <div class="main">
            <a href="###"><img src="imgs/nanshijingpin.jpg" alt=""/></a>
        </div>
    </div>
</div>

</body>
</html>
  • 實現效果
    在這裏插入圖片描述

7.鏈式編程案例1

獲取列表中的每個li,當鼠標進入之後,當前的li有高亮顯示,點擊得時候可以讓當前被點擊的li字體變大,字體顏色改變,字體也改變

  • 代碼如下:
  <!DOCTYPE html>
  <html lang="en">
  <head>
  	<meta charset="UTF-8">
  	<title>鏈式編程</title>
  </head>
  <body>
  	<script type="text/javascript" src="jquery-1.12.2.js"></script>
  	<ul id="uu">
  		<li>11</li>
  		<li>22</li>
  		<li>33</li>
  		<li>44</li>
  		<li>55</li>
  		<li>66</li>

  	</ul>
  	<script type="text/javascript">
  		//獲取列表中的每個li,當鼠標進入之後,當前的li有高亮顯示,點擊得時候可以讓當前被點擊的li字體變大 字體顏色改變 字體也改變
  		$(function(){
  			$('#uu>li').mouseover(function(){
  				//$(this).css{("font-size",'20px'),('font-fanily',''),('color','red')};
  				$(this).css('backgroundColor','red').siblings('li').css('backgroundColor','');
  			});
  			$('#uu>li').click(function(){
  				$(this).css('fontSize','50px').css('color','green');
  			});
  		});
  	</script>
  </body>
  </html>
  • 實現效果
    在這裏插入圖片描述

8.鏈式編程案例2

實現效果
點擊按鈕,改變按鈕的value值,鼠標進入按鈕中,按鈕的寬 高改變
鼠標離開的時候,按鈕背景的顏色綠色

- 代碼如下

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>鏈式編程2</title>
</head>
<body>
	<script type="text/javascript" src="jquery-1.12.2.js"></script>
	<input type="button" value="顯示效果" id="btn">
	<script type="text/javascript">

		//實現效果
		//點擊按鈕,改變按鈕的value值,鼠標進入按鈕中,按鈕的寬 高改變
		//鼠標離開的時候,按鈕背景的顏色綠色
		$(function(){
			$('#btn').click(function(){
				$(this).val('改變了');

				});
			$('#btn').mouseover(function(){
				$(this).css({'width':'150px','height':'50px'});
			});

			$('#btn').mouseout(function(){
				$(this).css('backgroundColor','green');
			});
		});
	</script>
</body>
</html>
  • 實現效果
    在這裏插入圖片描述

9.獲取兄弟元素案例

實現功能:
鼠標經過的時候,背景顏色爲紅色
點擊的時候,當前元素之前的所有元素均爲黃色,後面的所有元素爲綠色

  • 代碼
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        ul {
            list-style-type: none;
            width: 200px;
            position: absolute;
            left: 500px;
        }

        ul li {
            margin-top: 10px;
            cursor: pointer;
            text-align: center;
            font-size: 20px;
        }
        .red{
        	background-color: red;
        }
        .yellow{
        	background-color: yellow;
        }
        .green{
        	background-color: green;
        }
    </style>
    <script src="jquery-1.12.2.js"></script>
    <script>
    	//鼠標經過的時候,背景顏色爲紅色
    	//點擊的時候,當前元素之前的所有元素均爲黃色,後面的所有元素爲綠色
    	

        //獲取ul中所有的li,有鼠標進入事件,鼠標離開事件,點擊事件
        	$(function(){
            //獲取ul->li
        		$('ul>li').mouseover(function(){
        			$(this).addClass('red');
        		}).mouseout(function(){
        			$(this).removeClass('red');
        		}).click(function(){
        			$(this).prevAll('li').addClass('yellow');
        			$(this).nextAll('li').addClass('green');
        		});

      




                //當前元素前面的所有兄弟元素背景顏色爲黃色
                //$(this).prevAll().css("backgroundColor","yellow");
                //當前元素後面的所有兄弟元素背景顏色爲藍色
                //$(this).nextAll().css("backgroundColor","blue");

                //鏈式編程代碼
                //斷鏈:對象調用方法,返回的不是當前的對象,再調用方法,調用不了,
                //解決斷鏈--->恢復到斷鏈之前的一個效果--修復斷鏈
                //.end()方法恢復到斷鏈之前的效果
        	});
    </script>
</head>
<body>
<ul>
    <li>青島啤酒(TsingTao)</li>
    <li>瓦倫丁(Wurenbacher)</li>
    <li>雪花(SNOW)</li>
    <li>奧丁格教士(Franziskaner)</li>
    <li>科羅娜喜力柏龍(Paulaner)</li>
    <li>嘉士伯Kaiserdom</li>
    <li>羅斯福(Rochefort)</li>
    <li>粉象(Delirium)</li>
    <li>愛士堡(Eichbaum)</li>
    <li>哈爾濱牌藍帶</li>
</ul>

</body>
</html>
  • 實現效果
    在這裏插入圖片描述

10.動畫案例

點擊按鈕,然後圖中圖片每一秒消失一張,全部隱藏後,再以一秒的頻率出現

  • 代碼如下
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            width: 400px;
        }
        img{
            width:90px ;
            height:90px;
            vertical-align: top;
        }

    </style>
    <script src="jquery-1.12.2.js"></script>

    <script>
    $(function(){
        $('#btn1').click(function(){
            //獲取最後一張圖片然後隱藏
            $('div>img').last('img').hide(1000,function(){
                //arguments.callee相當於遞歸(直接調用當前方法)
                $(this).prev().hide(800,arguments.callee);
            });
        });
        $('#btn2').click(function(){
            //獲取最後一張圖片然後隱藏
            $('div>img').first('img').show(1000,function(){
                //arguments.callee相當於遞歸(直接調用當前方法)
                $(this).next().show(800,arguments.callee);
            });
        });
    });
       

    </script>
    
</head>
<body>
<input type="button" value="隱藏動畫" id="btn1"/>
<input type="button" value="顯示動畫" id="btn2"/>
<div>
    <img src="images/1.jpg"/>
    <img src="images/2.jpg"/>
    <img src="images/3.jpg"/>
    <img src="images/4.jpg"/>
</div>
</body>
</html>

在這裏插入圖片描述

11.全選和反選案例

  • 代碼如下
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .wrap {
            width: 300px;
            margin: 100px auto 0;
        }

        table {
            border-collapse: collapse;
            border-spacing: 0;
            border: 1px solid #c0c0c0;
        }

        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>
    <script src="jquery-1.12.2.js"></script>
    <script>
        //        $(function () {
        //            //爲全選的複選框添加點擊的方法
        //            $("#j_cbAll").click(function () {
        //                //當前的複選框選中
        //                //結果:true或者false
        //                var checked=$("#j_cbAll").prop("checked");
        //                $("#j_tb").find(":checkbox").prop("checked",checked);
        //            });
        //            //爲tbody中所有的checkbox添加點擊的方法
        //            $("#j_tb").find(":checkbox").click(function () {
        //                //獲取所有的checkbox的個數
        //                var checkboxLength=$("#j_tb").find(":checkbox").length;
        //                //獲取所有選中的checkbox的個數
        //                var checkedLength=$("#j_tb").find(":checked").length;
        //                //判斷個數是否相等
        //                if(checkboxLength==checkedLength){
        //                    $("#j_cbAll").prop("checked",true);
        //                }else{
        //                    $("#j_cbAll").prop("checked",false);
        //                }
        //            });
        //
        //        });
    </script>
    <script>
        $(function () {
            //全選的複選框註冊點擊的事件
            $('#j_cbAll').click(function(){

            
                //獲取該複選框的選中狀態,爲下面所有的複選框的選中狀態設置
                var checked = $(this).prop('checked') ;
                //獲取所有的複選框
           		$('#j_tb').find(':checkbox').prop('checked',checked);
           		});
            //獲取所有的複選框
            $('#j_tb').click(function(){
            //獲取所有選中的複選框的個數
            	var length1 = $(this).find(':checkbox').length;
            	var length2 = $(this).find(':checked').length;
            	if (length1 == length2) {
            		$('#j_cbAll').prop('checked',true);
            	}else{
            		$('#j_cbAll').prop('checked',false);

            	}
            })
              
             
             
                //對比個數是否相同,如果相同則全選,否則反選
            
        });  
    </script>
</head>

<body>
<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>JavaScript</td>
            <td>前端與移動開發學院</td>
        </tr>
        <tr>
            <td>
                <input type="checkbox" />
            </td>
            <td>css</td>
            <td>前端與移動開發學院</td>
        </tr>
        <tr>
            <td>
                <input type="checkbox" />
            </td>
            <td>html</td>
            <td>前端與移動開發學院</td>
        </tr>
        <tr>
            <td>
                <input type="checkbox" />
            </td>
            <td>jQuery</td>
            <td>前端與移動開發學院</td>
        </tr>
        <!--<tr>
            <td><input type="checkbox"/></td>
            <td>HTML5</td>
            <td>前端與移動開發學院</td>
        </tr>
        <tr>
            <td><input type="checkbox"/></td>
            <td>CSS3</td>
            <td>前端與移動開發學院</td>
        </tr>-->
        </tbody>
    </table>
</div>
</body>

</html>

在這裏插入圖片描述

12.固定導航欄案例

  • 代碼如下
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>防騰訊固定導航欄</title>
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
        }

        .main {
            width: 1000px;
            margin: 0 auto;
        }
        /*.top {
            height: 171px;
        }
        .nav {
            height: 86px;
        }*/
    </style>
    <script src="jquery-1.12.2.js"></script>
    <script>
  		$(function(){
  			//滾動條事件是在瀏覽器中,因此頂級對象爲window
  			$(window).scroll(function(){
  				//判斷向上捲曲出去的距離是否大於或等於應用類樣式top的div高度
  				if ($('.top').height() <= $(document).scrollTop()) {
  					$('.nav').css('position','fixed').css('top',0);
  					$('.main').css('marginTop',$('.nav').height());
  				}else{
  					$('.nav').css('position','static');//static表示還原爲原來未脫標時的狀態
  					$('.main').css('marginTop',0);
  				}
  			})
  		})
    </script>
</head>

<body>
<div class="top">
    <img src="images/top.png" />
</div>
<div class="nav">
    <img src="images/nav.png" />
</div>
<div class="main">
    <img src="images/main.png" />
</div>
</body>

</html>

在這裏插入圖片描述

13.按鍵改變背景顏色

按下不同鍵盤上的按鍵, div對應不同的顏色

  • 代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>按鍵改變顏色</title>
</head>
<body>
	<style type="text/css">
	div{
		widows: 200px;
		height: 100px;
		background-color: pink;
	}
</style>
	<div id="dv"></div>
	<script type="text/javascript" src="jquery-1.12.2.js"></script>
	<script type="text/javascript">
		$(function(){

			$(document).keydown(function (e){
				var code = e.keyCode;
				switch(code){
					case 65:$('#dv').css('backgroundColor','red');
					break;
					case 66:$('#dv').css('backgroundColor','orange');
					break;
					case 67:$('#dv').css('backgroundColor','yellow');
					break;
					case 68:$('#dv').css('backgroundColor','green');
					break;
					case 69:$('#dv').css('backgroundColor','blue');
					break;
					case 70:$('#dv').css('backgroundColor','pink');
					break;
					break;
					case 70:$('#dv').css('backgroundColor','purple');
					break;
				}
			})
		})
	</script>

	
</body>
</html>
  • 依次按下a b c d e f 之後
    在這裏插入圖片描述

14.事件冒泡

什麼是事件冒泡:
在元素中有元素,這些元素具有相同的事件,一旦最裏面的事件被觸發,外面的元素自然也被觸發
例如:元素A中含有元素B,A和B都有點擊事件,當B的點擊事件被觸發之後,A的點擊事件也隨之被觸發

  • 如下所示
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>取消事件冒泡</title>
	<style type="text/css">
	#dv1{
		width: 300px;
		height: 300px;
		background-color: red;
	}
		#dv2{
		width: 250px;
		height: 250px;
		background-color: green;
	}

	#dv3{
		width: 200px;
		height: 200px;
		background-color: blue;
	}

</style>
</head>
<body>
	<div id="dv1">
		<div id="dv2">
			<div id="dv3"></div>
		</div>
	</div>
	<script type="text/javascript" src="jquery-1.12.2.js"></script>
	<script type="text/javascript">
		$('#dv1').click(function(){
			alert('d1被點擊');
		})
		$('#dv2').click(function(){
			alert('d2被點擊');
		})
		$('#dv3').click(function(){
			alert('d3被點擊');
		})
	</script>
</body>
</html>

在這裏插入圖片描述
如何取消事件冒泡
在每個事件最後加上 return false即可
或者e.stoPropagation();

return false——還可以取消瀏覽器的默認事件

15.五角星評分案例

這個案例雖然代碼只有幾行,但是邏輯超級好
效果如淘寶評價

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>五角星評分案例</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .comment {
            font-size: 40px;
            color: yellow;
        }

        .comment li {
            float: left;

        }

        ul {
            list-style: none;
        }
    </style>
    <script src="jquery-1.12.2.js"></script>

    <script>
//        $(function () {
//            //獲取所有的li綁定鼠標進入和鼠標離開和點擊事件
//            $(".comment>li").mouseover(function () {
//                $(this).text("★").prevAll("li").text("★").end().nextAll("li").text("☆");
//            }).mouseout(function () {
//                $(this).text("☆").prevAll("li").text("☆");
//                //獲取屬性index爲10的這個li和這個li前面所有的li
//                $(".comment>li[index=10]").text("★").prevAll("li").text("★");
//
//            }).click(function () {
//                $(this).attr("index","10").siblings("li").removeAttr("index");
//            });
//        });
    //</script>
    <script>
    $(function(){
        $('.comment>li').mouseover(function(){
            $(this).text('★');
            $(this).prevAll('li').text('★');
        });
        $('.comment>li').mouseout(function(){
            //尋找li
            $('.comment').find('li').text('☆');
        //    $(this).prevAll('li').text('☆');
        //    如果裏面有index元素
            $('.comment>li[index=1]').text('★').prevAll("li").text("★");
        });
        $('.comment>li').click(function(){
            $(this).attr('index','1').siblings('li').removeAttr('index');
        });
    });
      
    
    </script>
    }
</head>

<body>
<ul class="comment">
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
</ul>
</body>

</html>

  • 實現效果
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章