<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>131-140章總結</title> </head> <body> <pre> 131. 定時器的應用1 </pre> <style type="text/css"> #box1 { width: 100px; height: 100px; background-color: red; position: absolute; left: 0; } </style> <button id="btn01">點擊按鈕之後box1向右移動</button> <div class="" style="position: relative;height: 200px;"> <div id="box1"></div> </div> <script type="text/javascript"> console.log("第131"); var box1 = document.getElementById("box1"); var btn01 = document.getElementById("btn01"); var timer1; btn01.onclick = function(){ clearInterval(timer1); timer1 = setInterval(function(){ var oldValue = parseInt(getStyle(box1,"left")); var newValue = oldValue + 10; if(newValue > 800){ newValue = 800; } box1.style.left = newValue + "px"; if(newValue == 800){ clearInterval(timer1); } },30); }; /* * 定義一個函數,用來獲取指定元素的當前的樣式 * 參數: * obj 要獲取樣式的元素 * name 要獲取的樣式名 */ function getStyle(obj , name) { if(window.getComputedStyle){ //正常瀏覽器的方式,具備 getComputedStyle()方法 return getComputedStyle(obj , null)[name]; } else { //IE8的方式,沒有getComputedStyle()方法 return obj.currentStyle[name]; } } </script> <pre> 132. 定時器的應用2 </pre> <div class="" style="position: relative;height: 200px;"> <button id="btn21">點擊按鈕之後box1向右移動</button> <button id="btn22">點擊按鈕之後box1向左移動</button> <br /><br /> <div id="box21" style="width: 100px;height: 100px;background-color: #ddd;position: absolute;"></div> </div> <script type="text/javascript"> console.log("第132"); var box21 = document.getElementById("box21"); var btn21 = document.getElementById("btn21"); var btn22 = document.getElementById("btn22"); //點擊按鈕之後,使box1向右移動(left值增大) btn21.onclick = function(){ move(box21 , 800 , 10); }; //點擊按鈕之後,使box1向左移動(left值減少) btn22.onclick = function(){ move(box21 , 0 , 10); }; //定義一個變量,用來保存定時器的標識 var timer2; //嘗試建立一個能夠執行簡單動畫的函數 /* * 參數: * obj:要執行動畫的對象 * target:執行動畫的目標位置 * speed:移動的速度(正數向右移動,負數向左移動) */ function move(obj , target ,speed){ // 關閉上一個定時器 clearInterval(timer2); // 獲取元素目前的位置 var current = parseInt(getStyle(obj,"left")); //判斷速度的正負值 //若是從0 向 800移動,則speed爲正 //若是從800向0移動,則speed爲負 if(current > target){ //此時速度應爲負值 speed = -speed; } //開啓一個定時器,用來執行動畫效果 timer2 = setInterval(function(){ //獲取obj的原來的left值 var oldValue = parseInt(getStyle(obj,"left")); //在舊值的基礎上增長 var newValue = oldValue + speed; //判斷newValue是否大於800 //從800 向 0移動 //向左移動時,須要判斷newValue是否小於target //向右移動時,須要判斷newValue是否大於target if((speed < 0 && newValue < target) || (speed > 0 && newValue > target)){ newValue = target; } obj.style.left = newValue + "px"; //當元素移動到0px時,使其中止執行動畫 if(newValue == target){ //達到目標,關閉定時器 clearInterval(timer2); } },30); } </script> <pre> 133. 定時器的應用3 </pre> <div class="" style="position: relative;height: 300px;"> <div><button id="btn31">點擊屢次變化</button></div><br /> <div id="box31" style="position: absolute;width: 100px;height: 100px;background-color: #5197ff;"></div> </div> <script type="text/javascript"> console.log("第133"); //嘗試建立一個能夠執行簡單動畫的函數 /* * 參數: * obj:要執行動畫的對象 * attr:要執行動畫的樣式,好比:left top width height * target:執行動畫的目標位置 * speed:移動的速度(正數向右移動,負數向左移動) * callback:回調函數,這個函數將會在動畫執行完畢之後執行 */ function moveAni(obj, attr, target, speed, callback) { //關閉上一個定時器 clearInterval(obj.timer); //獲取元素目前的位置 var current = parseInt(getStyle(obj, attr)); //判斷速度的正負值 //若是從0 向 800移動,則speed爲正 //若是從800向0移動,則speed爲負 if(current > target) { //此時速度應爲負值 speed = -speed; } //開啓一個定時器,用來執行動畫效果 //向執行動畫的對象中添加一個timer屬性,用來保存它本身的定時器的標識 obj.timer = setInterval(function() { //獲取box1的原來的left值 var oldValue = parseInt(getStyle(obj, attr)); //在舊值的基礎上增長 var newValue = oldValue + speed; //判斷newValue是否大於800 //從800 向 0移動 //向左移動時,須要判斷newValue是否小於target //向右移動時,須要判斷newValue是否大於target if((speed < 0 && newValue < target) || (speed > 0 && newValue > target)) { newValue = target; } //將新值設置給box1 obj.style[attr] = newValue + "px"; //當元素移動到0px時,使其中止執行動畫 if(newValue == target) { //達到目標,關閉定時器 clearInterval(obj.timer); //動畫執行完畢,調用回調函數 callback && callback(); } }, 30); } var btn31 = document.getElementById("btn31") btn31.onclick = function(){ moveAni(box31,"width",200,10,function(){ moveAni(box31,"height",200,10,function(){ moveAni(box31,"left",50,10,function(){ }) }) }) } </script> <pre> 134. 完成輪播圖界面 </pre> <pre> 135. 完成點擊按鈕切換圖片 </pre> <pre> 136. 完成輪播圖 </pre> <style type="text/css"> *{ margin: 0; padding: 0; } #outer{ width: 520px; height: 333px; margin: 20px; background-color: greenyellow; padding: 10px 0; position: relative; overflow: hidden; } #imgList{ list-style: none; position: absolute; left: 0px; } #imgList li{ float: left; margin: 0 10px; } #navDiv{ position: absolute; bottom: 15px; } #navDiv a{ float: left; width: 15px; height: 15px; background-color: red; margin: 0 5px; opacity: 0.5; filter: alpha(opacity=50); } #navDiv a:hover{ background-color: black; } </style> <!-- 建立一個外部的div,來做爲大的容器 --> <div id="outer"> <!-- 建立一個ul,用於放置圖片 --> <ul id="imgList"> <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 id="navDiv"> <a href="javascript:;"></a> <a href="javascript:;"></a> <a href="javascript:;"></a> <a href="javascript:;"></a> <a href="javascript:;"></a> </div> </div> <script type="text/javascript"> console.log("第134,135,136"); var imgList = document.getElementById("imgList"); var imgArr = document.getElementsByTagName("img"); imgList.style.width = 520*imgArr.length+"px"; var navDiv = document.getElementById("navDiv"); var outer = document.getElementById("outer"); navDiv.style.left = (outer.offsetWidth - navDiv.offsetWidth)/2 + "px"; var index = 0; var allA = document.getElementsByTagName("a"); allA[index].style.backgroundColor = "black"; for(var i=0; i<allA.length ; i++){ allA[i].num = i; allA[i].onclick = function(){ index = this.num; setA(); moveAni(imgList , "left" , -520*index , 20 , function(){ autoChange(); }); }; } //開啓自動切換圖片 autoChange(); //建立一個方法用來設置選中的a function setA(){ //判斷當前索引是不是最後一張圖片 if(index >= imgArr.length - 1){ //則將index設置爲0 index = 0; //此時顯示的最後一張圖片,而最後一張圖片和第一張是一摸同樣 //經過CSS將最後一張切換成第一張 imgList.style.left = 0; } for(var i=0 ; i<allA.length ; i++){ allA[i].style.backgroundColor = ""; } allA[index].style.backgroundColor = "black"; }; //定義一個自動切換的定時器的標識 var timer4; //建立一個函數,用來開啓自動切換圖片 function autoChange(){ //開啓一個定時器,用來定時去切換圖片 timer4 = setInterval(function(){ //使索引自增 index++; //判斷index的值 index %= imgArr.length; //執行動畫,切換圖片 moveAni(imgList , "left" , -520*index , 20 , function(){ //修改導航按鈕 setA(); }); },1500); } </script> <pre> 137. 類(class)的操做 </pre> <style type="text/css"> .b1{ width: 100px; height: 100px; background-color: red; } .b2{ height: 300px; background-color: yellow; } </style> <div class=""> <button id="btn71">點擊按鈕之後修改box的樣式</button> <br /><br /> <div id="box71" class="b1"></div> </div> <script type="text/javascript"> console.log("第137"); var btn71 = document.getElementById("btn71") var box71 = document.getElementById("box71") btn71.onclick = function(){ //addClass(box71,"b2") toggleClass(box71,"b2") } // 定義一個函數,用來向一個元素中添加指定的class屬性值 // 參數: obj 要添加class屬性的元素,cn 要添加的class值 function addClass(obj , cn){ //檢查obj中是否含有cn if(!hasClass(obj , cn)){ obj.className += " "+cn; } } // 判斷一個元素中是否含有指定的class屬性值 function hasClass(obj , cn){ //判斷obj中有沒有cn class //建立一個正則表達式 //var reg = /\bb2\b/; var reg = new RegExp("\\b"+cn+"\\b"); return reg.test(obj.className); } // 刪除一個元素中的指定的class屬性 function removeClass(obj , cn){ //建立一個正則表達式 var reg = new RegExp("\\b"+cn+"\\b"); //刪除class obj.className = obj.className.replace(reg , ""); } // toggleClass能夠用來切換一個類 function toggleClass(obj , cn){ //判斷obj中是否含有cn if(hasClass(obj , cn)){ //有,則刪除 removeClass(obj , cn); }else{ //沒有,則添加 addClass(obj , cn); } } </script> <pre> 138. 二級菜單完成基本功能 </pre> <pre> 139. 二級菜單過渡效果 </pre> <style type="text/css"> div.sdmenu { width: 150px; margin: 20px; font-family: Arial, sans-serif; font-size: 12px; padding-bottom: 10px; background: #eee; color: #fff; } div.sdmenu div { background: #bbb; overflow: hidden; } div.sdmenu div.collapsed { height: 25px; } div.sdmenu div span { display: block; position: relative; height: 15px; line-height: 15px; overflow: hidden; padding: 5px 25px; font-weight: bold; color: white; cursor: pointer; border-bottom: 1px solid #ddd; } div.sdmenu div span:before { content: ''; position: absolute; top: 7px; left: 10px; width: 0; height: 0; border-style: solid; border-width: 5px; border-color:#333 transparent transparent transparent; } div.sdmenu div.collapsed span:before { border-color: transparent transparent transparent #333; } div.sdmenu div a { padding: 5px 10px; background: #eee; display: block; border-bottom: 1px solid #ddd; color: #066; } div.sdmenu div a.current { background: #ccc; } div.sdmenu div a:hover { background: #066 ; color: #fff; text-decoration: none; } </style> <div id="my_menu" class="sdmenu"> <div> <span class="menuSpan">在線工具</span> <a href="javascript:;">圖像優化</a> <a href="javascript:;">收藏夾圖標生成器</a> <a href="javascript:;">郵件</a> <a href="javascript:;">htaccess密碼</a> <a href="javascript:;">梯度圖像</a> <a href="javascript:;">按鈕生成器</a> </div> <div class="collapsed"> <span class="menuSpan">支持咱們</span> <a href="javascript:;">推薦咱們</a> <a href="javascript:;">連接咱們</a> <a href="javascript:;">網絡資源</a> </div> <div class="collapsed"> <span class="menuSpan">合做夥伴</span> <a href="javascript:;">JavaScript工具包</a> <a href="javascript:;">CSS驅動</a> <a href="javascript:;">CodingForums</a> <a href="javascript:;">CSS例子</a> </div> <div class="collapsed"> <span class="menuSpan">測試電流</span> <a href="javascript:;">Current or not</a> <a href="javascript:;">Current or not</a> <a href="javascript:;">Current or not</a> <a href="javascript:;">Current or not</a> </div> </div> <script type="text/javascript"> console.log("第138,139"); /* * 咱們的每個菜單都是一個div * 當div具備collapsed這個類時,div就是摺疊的狀態 * 當div沒有這個類是,div就是展開的狀態 */ //獲取全部的class爲menuSpan的元素 var menuSpan = document.querySelectorAll(".menuSpan"); //定義一個變量,來保存當前打開的菜單 var openDiv = menuSpan[0].parentNode; //爲span綁定單擊響應函數 for(var i=0 ; i<menuSpan.length ; i++){ menuSpan[i].onclick = function(){ //this表明我當前點擊的span //獲取當前span的父元素 var parentDiv = this.parentNode; //切換菜單的顯示狀態 toggleMenu(parentDiv); //判斷openDiv和parentDiv是否相同 if(openDiv != parentDiv && !hasClass(openDiv , "collapsed")){ //切換菜單的顯示狀態 toggleMenu(openDiv); } //修改openDiv爲當前打開的菜單 openDiv = parentDiv; }; } // 用來切換菜單摺疊和顯示狀態 function toggleMenu(obj){ //在切換類以前,獲取元素的高度 var begin = obj.offsetHeight; //切換parentDiv的顯示 toggleClass(obj , "collapsed"); //在切換類以後獲取一個高度 var end = obj.offsetHeight; //console.log("begin = "+begin +" , end = "+end); //動畫效果就是將高度從begin向end過渡 //將元素的高度重置爲begin obj.style.height = begin + "px"; //執行動畫,從bengin向end過渡 moveAni(obj,"height",end,10,function(){ //動畫執行完畢,內聯樣式已經沒有存在的意義了,刪除之 obj.style.height = ""; }); } </script> <pre> 140. JSON - JS中的對象只有JS本身認識,其餘的語言都不認識 - JSON就是一個特殊格式的字符串,這個字符串能夠被任意的語言所識別, 而且能夠轉換爲任意語言中的對象,JSON在開發中主要用來數據的交互 - JSON - JavaScript Object Notation JS對象表示法 - JSON和JS對象的格式同樣,只不過JSON字符串中的屬性名必須加雙引號 其餘的和JS語法一致 JSON分類: 1.對象 {} 2.數組 [] JSON中容許的值: 1.字符串 2.數值 3.布爾值 4.null 5.對象 6.數組 </pre> <script type="text/javascript"> console.log("第140"); var arr = '[1,2,3,"hello",true]'; var obj2 = '{"arr":[1,2,3]}'; var arr2 ='[{"name":"孫悟空","age":18,"gender":"男"},{"name":"孫悟空","age":18,"gender":"男"}]'; /* * 將JSON字符串轉換爲JS中的對象 * 在JS中,爲咱們提供了一個工具類,就叫JSON * 這個對象能夠幫助咱們將一個JSON轉換爲JS對象,也能夠將一個JS對象轉換爲JSON */ var json = '{"name":"孫悟空","age":18,"gender":"男"}'; /* * json --> js對象 * JSON.parse() * - 能夠將以JSON字符串轉換爲js對象 * - 它須要一個JSON字符串做爲參數,會將該字符串轉換爲JS對象並返回 */ var o = JSON.parse(json); var o2 = JSON.parse(arr); console.log(o.gender); console.log(o2[1]); var obj3 = {name:"豬八戒" , age:28 , gender:"男"}; /* * JS對象 ---> JSON * JSON.stringify() * - 能夠將一個JS對象轉換爲JSON字符串 * - 須要一個js對象做爲參數,會返回一個JSON字符串 */ var str = JSON.stringify(obj3); console.log(str); /* * JSON這個對象在IE7及如下的瀏覽器中不支持,因此在這些瀏覽器中調用時會報錯 */ var str3 = '{"name":"孫悟空","age":18,"gender":"男"}'; JSON.parse(str3); /* * eval() * - 這個函數能夠用來執行一段字符串形式的JS代碼,並將執行結果返回 * - 若是使用eval()執行的字符串中含有{},它會將{}當成是代碼塊 * 若是不但願將其當成代碼塊解析,則須要在字符串先後各加一個() * - eval()這個函數的功能很強大,能夠直接執行一個字符串中的js代碼, * 可是在開發中儘可能不要使用,首先它的執行性能比較差,而後它還具備安全隱患 */ var str2 = "console.log('hello');"; var obj = eval(str2); </script> </body> </html>
全部基礎課程連接:javascript
1.JavaScript基礎視頻教程總結(001-010章) 2.JavaScript基礎視頻教程總結(011-020章) 3. JavaScript基礎視頻教程總結(021-030章) 4. JavaScript基礎視頻教程總結(031-040章)css
5. JavaScript基礎視頻教程總結(041-050章) 6. JavaScript基礎視頻教程總結(051-060章) 7. JavaScript基礎視頻教程總結(061-070章) 8. JavaScript基礎視頻教程總結(071-080章)html
9. JavaScript基礎視頻教程總結(081-090章) 10. JavaScript基礎視頻教程總結(091-100章) 11. JavaScript基礎視頻教程總結(101-110章) 12. JavaScript基礎視頻教程總結(111-120章)java
13. JavaScript基礎視頻教程總結(121-130章) 14. JavaScript基礎視頻教程總結(131-140章)正則表達式
另外,歡迎關注個人新浪微博json