目錄javascript
基本數據類型number,string,boolean,undefined,null 引用數據類型:Array,Object,Function
switch(name){ case 'xxx'; break; case 'xxx'; break; default: break; } for (var i=0;i<10;i++){ run to code } 三元運算: 1>3? '真的':'假的';
&& || ! i ++ ==比較值 ===比較值和數據類型
slice() 切片 一個參數從當前位置切到最後,兩個參數顧頭不顧尾 substring() substr() 若是有兩個參數,第二個參數表示切字符串的個數 join() 字符串拼接 concat() + es6的模版字符串 ··插入變量用${變量名} //獲取索引 indexOf() lastIndexOf() //獲取字符 charAt() //獲取字符ascii碼 charCodeAt() //轉大寫 toUppercase() //轉小寫 tolowercase() typeOf 校驗當前變量的數據類型 trim 清除左右的空格
toString() join('#') concat() //棧 push() pop() //堆 unshift() shift() splice(起始位置,刪除的個數,添加的元素); //增長,刪除,替換 reverse() sort() slice() length //迭代方法 forEach() //僅能在數組對象中使用。 for 在函數中arguments 這個對象是僞數組
function fn(name){ var obj = {}; obj[name]='mjj'; return obj; } fn('age') //遍歷對象 for (var key in obj) { obj[key] }
1.建立方法 //普通函數 function fn(){ } fn(); //函數表達式 var fn = function(){ run to code } //匿名函數 (function(){})()//this指向必定指向window 全局做用域,函數做用域,函數做用域中this指向能夠發生改變,能夠使用call() 或者apply() e.g.: var obj = {name:'mjj'}; function fn(){ console.log(this.name); } fn();//是空制,由於函數內容this指向window fn.call(obj);//此時函數內部的this指向obj 構造函數 new object(); new Array(); new String(); 父級定義一個屬性必須使用prototype
var data = new Data(); date.toLocaleString() //2018/08/21 21:33:23
Math.ceil(); 向上取整,天花板函數 Math.floor(); 向下取整,地板函數 Math.round(); 標準的四捨五入 隨機數 Math.random();獲取到0-1之間的數 function random(min,max){ Math.floor(Math.random()*(max-min))+min; }
1.數值轉字符串 toString() 數字+空字符串 2.字符串轉數值 parseInt() 轉整數 parseFloat() 轉浮點型 Number() NAN isNaN() Infinity 無限大
1.ES6能夠用let定義塊級做用域變量 2.let 配合for循環的獨特應用 3.let沒有變量提高與暫時性死區 4.let變量不能重複聲明
var a = 99; // 全局變量a f(); // f是函數,雖然定義在調用的後面,可是函數聲明會提高到做用域的頂部。 console.log(a); // a=>99, 此時是全局變量的a function f() { console.log(a); // 當前的a變量是下面變量a聲明提高後,默認值undefined var a = 10; console.log(a); // a => 10 } //undefined //10 //99
BOM的核心對象是Window,它表示瀏覽器的一個實例,在瀏覽器中,window對象有雙重角色,便是JavaScript訪問瀏覽器窗口的一個接口。css
又是ECMAScript規定Global對象。html
<body> <script type="text/javascript"> window.alert('mjj'); </script> </body>
例題java
//例題: <script> console.log(window.location); var i=1; function f(){ i++; console.log("打印 : "+i); return k; function k() { return "I love you!" } } f(); console.log("111111111111"); f()(); alert(f()()); </script> //打印2 //11111111111 //打印3 //打印4 //警告框出現"I love you!"
true
,點擊取消,返回false
。<body> <script type="text/javascript"> var src = window.prompt("今每天氣如何"); switch (src) { case '晴天': console.log('出去打球'); break; case '陰天': console.log('在家睡覺'); break; default: console.log("什麼都不作"); break } </script> </body>
<body> <script type="text/javascript"> var src = window.prompt("今每天氣如何",'晴天'); switch (src) { case '晴天': console.log('出去打球'); break; case '陰天': console.log('在家睡覺'); break; default: console.log("什麼都不作"); break } </script> </body>
<script type="text/javascript"> window.setTimeout(function(){ console.log('2秒後我將打印'); },2000); console.log('馬上打印'); </script> //setTimeout(參數1,參數2);參數1爲一個函數,參數2爲時間以毫秒爲單位。此處要知道setTimeout是異步。
一次性任務的清除node
var timer = setTimeout(callback,1000); clearTimeout(timer); //清除定時器。
href屬性python
//2秒後跳轉 百度網頁 setTimeout(function () { location.href = 'https://www.baidu.com'; },2000);
replacees6
//2秒後跳轉 百度網頁,在當前頁面跳轉 setTimeout(function(){ location.replace('https://www.baidu.com'); },2000)
setInterval()
方法表示週期性循環的定時任務.它接收的參數跟setTimeout()
方法同樣.<script> var num = 0; var timer = null; //開啓定時器 timer = window.setInterval(function(){ num++; if (num===10){ //當num===10 清除定時器 clearInterval(timer); } console.log(num);//console打印出數字 },1000);//1000ms=1s </script>
//每2秒刷新。 setInterval(function(){ //作測試 location.reload(); },2000); //局部刷新 ajax技術,在不重載頁面上,對網頁進行操做
<script> console.log(window.location);//獲取屬性 setInterval(function(){ location.reload();//刷新頁面 },2000); </script> //侷限較大,一般都是局部刷新,經過AJAX技術,在不重載頁面的狀況,對網頁進行操做
reload()方法ajax
location.reload();//從新加載(有可能從緩存中加載) location.reload(true;)//從新加載(強制從服務器加載)
history編程
history.go(-1);//後退一頁 history.go(1);//前進一頁 history.go(2);//前進兩頁
console.log(window.location); //獲取屬性
<body>
、<p>
、<ul>
之類的元素這些咱們都稱爲叫元素節點(element node)。元素只是不一樣節點類型中的一種。若是一份文檔徹底由一些空白元素構成,它將有一個結構,但這份文檔自己將不會包含什麼內容。在網上,內容決定着一切,沒有內容的文檔是沒有任何價值的,而絕大數內容都是有文本提供。數組
//示例: <p>這是一個文本</p> //‘這是一個文本’ 是一個文本節點
還存在着其餘的一些節點類型。例如,註釋就是另一種節點類型。但這裏咱們介紹的是屬性節點。
//示例 <p title='book'>這是一本書!</p> //title='book'是一個屬性節點
<body> <div id="box">MJJ</div> <ul id="box2"> <li class="active"></li> <li></li> <li></li> </ul> <script> var box = document.getElementById('box'); console.log(box); console.dir(box); </script> <body> //
//示例1: <body> <div id="box">MJJ</div> <ul id="box2"> <li class="active"></li> <li></li> <li></li> </ul> <script> var box = document.getElementsByTagName('div'); console.log(box);//HTMLCollection [div#box, box: div#box] </script> </body>
//示例2 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> //css <style> ul li.active{ color:red; } </style> </head> <body> //html <div id="box">MJJ</div> <ul id="box2"> <li>1</li> <li>2</li> <li>3</li> </ul> //JS: <script> var lis = document.getElementsByTagName('li'); //三個li籤 console.log(lis);//HTMLCollection(3) [li, li, li] for (var i=0;i<lis.length;i++){//循環將li標籤添加class 屬性,讓CSS渲染 lis[i].className = 'active'; } </script> </body> </html> //示例3: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> //css <style> ul li.active{ color:red; } </style> </head> <body> //html <div id="box">MJJ</div> <ul id="box2"> <li>1</li> <li>2</li> <li>3</li> </ul> //JS: <script> var lis = document.getElementsByTagName('li'); //三個li籤 console.log(lis);//HTMLCollection(3) [li, li, li] for (var i=0;i<lis.length;i++){//循環 lis[i].onclick = function(){ this.className = 'active';//鼠標點擊獲取事件,並將li標籤添加class 屬性,讓CSS渲染 }; } </script> </body> </html> //示例4: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> //css <style> ul li.active{ color:red; } </style> </head> <body> //html <div id="box">MJJ</div> <ul id="box2"> <li>1</li> <li>2</li> <li>3</li> </ul> //JS: <script> var lis = document.getElementsByTagName('li'); //三個li籤 console.log(lis);//HTMLCollection(3) [li, li, li] for (var i=0;i<lis.length;i++){//循環 lis[i].onclick = function(){ for (var k=0;k<lis.length;k++){ lis[k].className = '';//排他思想,讓其餘li默認class='' } this.className= 'active';//鼠標點擊獲取事件,並將li標籤添加class 屬性,讓CSS渲染 }; } </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> ul li.active{ color:red; } </style> </head> <body> <div id="box">MJJ</div> <ul id="box2"> <li class="active">1</li> <li>2</li> <li>3</li> </ul> <script> var lis = document.getElementsByClassName('active'); console.log(lis);//HTMLCollection [li.active] var box = document.getElementById("box2"); console.log(box.children);//得到box2下全部的子元素 HTMLCollection(3) [li.active, li, li] </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> ul li.active{ color:red; } ul li.att{ color:blue; } </style> </head> <body> <div id="box">MJJ</div> <ul id="box2"> <li class="active">1</li> <li>2</li> <li>3</li> </ul> //紅色藍色來回切換 <script> var lis = document.getElementsByClassName('active')[0]; var des = true; lis.onclick = function(){ if (des){ this.className = 'att';des=false; }else{this.className = 'active'; des = true; } }; </script> </body> </html>
-
,其後面字母大寫)//示例1 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #box{ width: 200px; height: 200px; background-color: red; } </style> </head> <body> <div id="box">MJJ</div> <script type="text/javascript"> // 1.獲取事件源對象 var box = document.getElementById('box'); // console.log(box); //鼠標懸浮,更改樣式 //2.綁定事件 box.onmouseover = function () { box.style.backgroundColor = "green"; box.style.fontSize = '30px'; box.style.width = "200px"; box.style.height = '200px'; }; //鼠標離開更改樣式 box.onmouseout = function(){ box.style.backgroundColor = 'red'; box.style.fontSize = '15px'; box.style.width = "400px"; box.style.height = '400px'; }; </script> </body> </html> //示例2: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #box{ width: 200px; height: 200px; background-color: red; } </style> </head> <body> <div id="box">MJJ</div> <script type="text/javascript"> var box = document.getElementById('box'); des = true; box.onclick = function(){ if (des){ box.style.backgroundColor = 'blue'; des = false; }else{ box.style.backgroundColor = 'green'; des = true; } } </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .a{ color:red; font-size:30px; } p.active{ color:blue; } </style> </head> <body> <p title="my class" id = 's21' class="a">21</p> <script> var p1 = document.getElementById('s21'); console.log(p1.getAttribute('title'));//my class console.log(p1.getAttribute('class'));//a p1.setAttribute('class','s20'); //更改屬性class 值爲s20 p1.setAttribute('hello','python');//創建屬性hello 值爲python console.log(p1.getAttribute('hello'));//python console.log(p1.className);//s20 console.log(p1.title);//my class console.dir(p1);//p#s21.s20 屬性 p1.onclick = function(){ this.className = this.className + ' active';//加上' active' CSS可用 p.active }; </script> </body> </html>
此方法可返回一個Element對象。
var newNode = document.createElement(tagName);
appendChild添加節點
僅僅對元素獲取或者設置文本
newNode.innerText = '你好';
既能夠設置文本又能夠設置標籤
newNode.innerHTML = `<a>mjj</a>`
注意:若是想獲取節點對象的文本內容,能夠直接調用innerText或者innerHTML屬性來獲取。
<body> <div id="box">MJJ <ul id="box2"> <li class="active">1</li> <li>2</li> <li>3</li> </ul> </div> <script> var box = document.getElementById('box'); console.log(box.innerText); console.log(box.innerHTML); </script> </body> //這是innerText結果 //MJJ //1 //2 //3 //這是innerHTML結果 //MJJ // <ul id="box2"> // <li class="active">1</li> // <li>2</li> // <li>3</li> // </ul>
在指定的節點的最後一個子節點以後添加一個新的子節點。
appendChild(newNode);
方法可在已有的子節點前插入一個新的子節點
insertBefore(newNode,node);
removeChild()方法從子節點列表中刪除某個節點。若是刪除成功,此方法可返回被刪除的節點,如失敗,則返回NULL。
例題:
<body> <ul id = 'box'></ul> <script type = 'text/javascript'> //經過ID獲取單個節點對象 var ul = document.getElementById('box'); var li1 = document.createElement('li'); var li2 = document.createElement('li'); //innerText 只能設置文本格式內容 li2.innerText = '你好'; //innerHTML 能夠設置HTML格式,如標籤 li1.innerHTML =`<a href='#'>123</a>`; //給li1子標籤(a)添加屬性 li1.children[0].style.color = 'blue'; li1.children[0].style.fontSize = '28px'; //給li2標籤添加屬性(也就是li)color // console.log(li2);//li li2.style.color = 'red'; //將建立好的標籤加入ul裏。 ul.appendChild(li1); ul.appendChild(li2); //將li2更改text值,並在li1前面,插入ul標籤li2, li2.innerHTML = '第一個'; ul.insertBefore(li2,li1); //將li2標籤移除 ul.removeChild(li2); </script> </body>
直觀的理解一波
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #box{ height: 300px; padding: 10px; border: 1px solid red; background-color: blue; } </style> </head> <body> <div id="box"></div> <script type="text/javascript"> var box = document.getElementById("box"); console.log(box.height);//undefined console.log(box.offsetHeight);//322 console.log(box.clientHeight);//320 </script> </body> </html>
事件是您在編程時系統內發生的動做或者發生的事情,系統經過它來告訴您在您願意的狀況下您能夠以某種方式對它作出迴應。例如:若是您在網頁上單擊一個按鈕,您可能想經過顯示一個信息框來響應這個動做。
主要事件有:
事件 | 說明 |
---|---|
onclick | 鼠標單擊事件 |
onmouseover | 鼠標通過事件 |
onmouseout | 鼠標移開事件 |
onchange | 文本框內容改變事件 |
onselect | 文本框內容被選中事件 |
onfocus | 光標聚焦事件 |
onblur | 光標失焦事件 |
onload | 網頁加載事件 |
關於事件相關學習參照:http://www.javashuo.com/article/p-qmxilyvt-h.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> li p.name{ color:red; } li span.price{ color:blue; } </style> </head> <body> <ul id="box"></ul> <script> //經過ID獲取單個節點對象 var box = document.getElementById('box'); var data = [ {id:1,name:'小米8',subName:'你真好',price:98}, {id:2,name:'小米6',subName:'你真好2',price:948}, {id:3,name:'小米4',subName:'你真好3',price:100}, {id:4,name:'小米2',subName:'你真好4',price:928}, {id:5,name:'小米10',subName:'你真好5',price:918} ]; //遍歷data,以便操做數組每一個元素 for (var i=0;i<data.length;i++){ //建立標籤li 建立節點 var li = document.createElement('li'); //插入數據 li.innerHTML = `<p class="name">${data[i].name}</p> <p class="subName">${data[i].subName}</p> <span class="price">${data[i].price}元</span> `; //提交數據 box.appendChild(li); } </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id = 'box'> <img src="images/1.jpg" alt="" id = "imgBox"> </div> <button id="prev">上一張</button> <button id="next">下一張</button> <script> //獲取id = 'box' var imgBox = document.getElementById('imgBox'); //獲取id = 'next' var next = document.getElementById('next'); //獲取id = 'prev' var prev = document.getElementById('prev'); var num = 1; //事件點擊next,此時執行nextImg函數 next.onclick = function () { nextImg(); }; //nextImg函數增長num值得到下一張圖片,最後一張作判斷,返回第一張 function nextImg() { num ++; if (num===5){ num = 1; } imgBox.src = `images/${num}.jpg`; } //事件點擊prev 此時執行prevImg()函數 prev.onclick = function(){ prevImg(); }; //prevImg函數減小num值得到上一張圖片,當num=0返回最後一張圖片 function prevImg() { num --; if (num===0){ num = 4; } imgBox.src = `images/${num}.jpg`; } </script> </body> </html>