JavaScript的總結部落格

來源:互聯網
上載者:User

JavaScript的總結部落格

一、尋找HTML元素

  通常,通過 JavaScript,您需要操作 HTML 元素。

  1、通過 id 找到 HTML 元素

  2、通過標籤名找到 HTML 元素

  3、通過類名找到 HTML 元素

提示:通過類名尋找 HTML 元素在 IE 5,6,7,8 中無效。

var x=document.getElementById("intro");var y=document.getElementsByTagName("p");
 

①、改變 HTML 元素的內容 (innerHTML)

document.getElementById(id).innerHTML=new HTML
 

②、改變 HTML 屬性

document.getElementById(id).attribute=new valuedocument.getElementById("image").src="landscape.jpg";
 

③、改變 HTML 樣式

document.getElementById(id).style.property=new style<script>document.getElementById("p2").style.color="blue";</script>
 

④、添加或刪除 HTML 元素

二、DOM 事件

1、Js中的事件

行為,結構,樣式分離的頁面

一般事件 onclick 滑鼠點擊時觸發此事件

ondblclick 滑鼠雙擊時觸發此事件
onmousedown 按下滑鼠時觸發此事件
onmouseup 滑鼠按下後鬆開滑鼠時觸發此事件
onmouseover 當滑鼠移動到某物件範圍的上方時觸發此事件
onmousemove 滑鼠移動時觸發此事件
onmouseout 當滑鼠離開某物件範圍時觸發此事件
onkeypress 當鍵盤上的某個鍵被按下並且釋放時觸發此事件.
onkeydown 當鍵盤上某個按鍵被按下時觸發此事件
onkeyup 當鍵盤上某個按鍵被按放開時觸發此事件

①、綁定事件的3種方式

1: 直接寫在html標籤內聲明

 

 

這種寫法最古老,相容性最強.屬於DOM的lev0級的標準.這個效果,等同於在點擊div的時候,執行"t();"這一語句,

在全域範圍內執行,因此,t函數內部的this指代全域對象-->window想操作被點擊的DOM對象,用this就不行了.

第2種綁定方式:

DOM對象.onclick = function () {}

這種綁定是把一個DOM對象onclick屬性賦值為一個函數,

因此,函數內部的this直接指向該DOM對象.

在這種綁定方式中,只能給一個事件,綁定一個處理函數

即 .onclick = fn1; .onclick = fn2;

最終的效果, 是.onclick = fn2;

如果用函數來調用其他函數的形式

例.onclick = function () {fn1(),fn2()}

那麼此時, fn1,fn2中的this又指向window.

如何綁定多個函數, 並令this指向DOM對象

第三種綁定事件的方法:

DOM lev3的事件綁定標準

添加和去除監聽事件.

addEventListener('事件',函數); // 第一個參數事件參數, 沒有首碼"on", w3c的標準,IE不支援

注意點1: 如果添加了多個事件處理函數, 按"添加時的先後順序來執行"

注意佔2: 事件處理函數中的this 指代 DOM節點自身 (w3c標準)

注意點3: 第一個事件參數,一律把事件名稱的'on'去掉 (w3c標準)

 

去除綁定

removeEventListener('事件',函數)

IE下綁定事件與解除事件的方法

attachEvent('事件',函數) // 注意: 事件 要加on

detachEvent('事件',函數) // 事件依然要加on

總結一下:

W3c addEventListener 與IE的attachEvent()的不同

1: 函數名不同

2: 事件名不同, IE下要加on,w3c不加on

3: 加事件後的執行順序不同, w3c按綁定事件的順序來執行, 而IE6,7,8,是後綁定的事件先發生.

4: this的指向, w3c中,綁定函數中的this指向 DOM對象, 而IE6,7,8中,指向window對象

 

===================================================================================================================================================================================

 

 

事件觸發總結:

1、onmousedown
定義:onmousedown事件會在滑鼠按鍵被按下時發生

2、onmouseup
定義:onmouseup事件會在滑鼠按鍵被鬆開時發生

3、onmousemove
定義:onmousemove事件會在滑鼠指標移動時發生
支援該事件的js對象:document
但是onmousemove預設情況下沒有任何對象的一個事件;
因為滑鼠移動頻繁發生。

4、onmouseover
定義:onmouseover事件會在滑鼠指標移動到指定的對象上時發生

5、onmouseout
定義:onmouseout事件會在滑鼠指標移出指定的對象時發生

6、onclick單擊事件
定義:onclick事件和onmousedown不同。單擊事件是在同一元素上發生了
滑鼠按下時間之後發生了滑鼠放開時間是發生的。
理解:滑鼠按下抬起以後事件才發生。

7、onfocus游標移入事件
定義:onfocus事件在對象獲得焦點時發生

8、onblur游標移出事件
定義:onblur事件會在對象失去焦點時發生

9、oncontextmenu右鍵事件
滑鼠按下右鍵的時候發生

10、onsubmit
onsubmit事件會在表單中的確認按鈕(submit)被
點擊是發生。

11、onkeydown
onkeydown事件會在使用者按下一個鍵盤按鍵時發生

12、onkeyup
obkeyup事件會在鍵盤按鍵被鬆開時發生

13、onload
onload事件會在頁面或映像載入完成後立即發生

14、onscroll
onscroll事件拖動捲軸時發生

15、onresize
onresize事件會在視窗或架構被調整大小時發生

16、onmousewheel
onmousewheel事件ie、chrome下滑鼠滾輪滾動時發生

17、DOMMouseScroll
DOMMouseScroll事件是標準下(ff)滑鼠滾輪事件,
滑鼠滾輪滾動時發生

18、onreadystatechange
onreadystatechange事件:當請求被發送到伺服器時;
我們需要執行一些基於響應的任務。每當readyState
改變時,就會觸發onreadystatechange事件。
readyState屬性存有XMLHttpRequest的狀態資訊。
在onreadystatechange事件中,我們規定當伺服器響應
已做好被處理的準備時所執行的任務。


19、attachEvent綁定事件
ie下的綁定事件,2個參數,第一個什麼事件,第二個執
行函數(倒序執行)。注意this指向
如:obj。attachEvent(‘onclick’,aaa)
function aaa(){}

20、addEventListener綁定事件
標準下的綁定事件,3個參數。1什麼事件(不加ON),
2執行函數 3、一個布爾值。true是捕獲階段,false是
冒泡階段

21、event對象指事件的狀態

簡單的:一個 存了 事件詳細資料的東西


網上較專業的:Event對象代表事件的狀態,比如事件在其中發生的元素
鍵盤按鍵的狀態,滑鼠的位置,滑鼠按鍵的狀態,通常
與函數結合使用。

22、clientX、clientY
在Event對象下擷取滑鼠位置

23、cancelBubble =true
在Event對象下取消冒泡事件

24、keyCode
在Event對象下擷取使用者按下鍵盤的哪個按鍵

25、preventDefault()
阻止預設預設事件的綁定寫法

26、return false
阻止預設時間的普通寫法

 

二、DOM 27-46
27、getElementById
通過id擷取某一個元素

28、getElementsByTagName
通過標籤名擷取一組元素的集合

29、childNodes
擷取子節點,但是標準下會擷取空白節點
擷取第一級子項目的節點

30、nodeType
節點類型
1)元素節點(標籤)2)文本節點(空白節點)

31、children
擷取子節點,但是沒有相容性問題
擷取第一級子項目的節點

32、firstElementChild || firstChild
標準下:firstElementChild ie不支援
ie下是 firstChild
擷取子項目裡的第一個

33、lastElementChild || lastChild
標準下:lastElementChild ie不支援
ie下是 lastChild
擷取子項目裡的最後一個

34、nextElementSibling || nextSibling
標準下:nextElementSibling ie不支援
ie下 nextSibling
擷取子指定元素的下一個兄弟節點

35、previousElementSibling || previousSibling
標準下: previousElementSibling ie不支援
id:previousSibling
擷取指定元素的上一個兄弟節點

36、parentNode
擷取父節點

37、offsetParent
擷取有定位的父節點,都沒有定位的話父節點就是body

38、offsetWidth-----有問題
擷取元素的實際寬度(width+padding+border)

39、offsetHeight
擷取元素的高度(height+padding+border)

40、clientWidth
擷取元素的內部寬度(width+padding)

41、clientHeight
擷取元素的內部高度(height+padding)

42、createElement(標籤名)
建立一個節點

43、appendchild(節點)
追加一個節點

44、insertBefore(節點,原有節點)
在已有的元素前面插入

45、removeChild(節點)
刪除一個節點

46、replaceChild(節點,已有節點)
替換已有的節點

 

三、BOM操作: 47-53
47、window。open()
開啟視窗

48、window。close()
關閉視窗,標準下不支援

49、window。location
擷取瀏覽器地址

50、window。location。href
擷取整體的網址

51、window。location。search
擷取問號?後面的內容,包括問號

52、window。location。hash
擷取警號#後面的內容,包括警號

53、window。location。reload()
自動重新整理,定時器配合

53、window。navigator。userAgent
擷取瀏覽器資訊

 

四、js基礎: 54-126
54、if else 如果。。。。否則。。。

55、switch 如果

56、?: 三木,就是如果。。。否則。。。

57、for(){} for迴圈

58、for in

59、while=for

60、continue 終止本次迴圈
if(i=2)continue 跳過這個條件

61、break 終止當前迴圈
if(i=3)break 結束本次

62、undefined 未定義

63、null=========?

64、=== 只比較,不轉換類型

65、== 不僅比較,而且還會將兩個東西轉換成相同的類型

66、= 賦值

67、! 就是 不 的意思

68、setTimeout
設定定時器,2秒鐘後,執行一次,並且只執行一次,---定時炸彈

69、clearTimerout
清楚定時器,清理setTimerout

70、setInterval
設定定時器,每兩秒執行一次

71、clearInterval
清楚定時器,清理setInterval

72、arguments
實參的元素集合

73、call
改變this取向
fn名.call(this,‘black’)第一個參數是函數之行的環境,
從第二個參數開始,才是函數的真正參數

oDiv.onclick = function(){
toChange.call(this,'black');
};
function toChange(sColor){
this.style.background = sColor;
}

74、apply
改變this取向,
function show(a, b)
{
alert('this是:'+this+'\na是:'+a+'\nb是:'+b);
}
show(12, 8);
show.apply(document, [12, 8]);
第二個參數是以數組形勢存在的

75、callee ===============?調用這個函數自身的


76、var arr=【】; 聲明一個數組

77、var arr=new Array() 聲明一個數組

78、push
向數組的末尾添加一個或更多元素,並返回新的長度

79、pop
刪除數組最後一個元素,並返回這個元素

80、shift
刪除數組第一個元素,並返回這個元素

81、unshift
向數組的開頭添加一個或多個元素,並返回新的長度

82、splice
刪除元素,並向數組添加新的元素

83、join()
把數組的所有元素放入一個字串。元素通過指定
的分隔字元進行分隔

84、sort()
對數組的元素進行排序

85、concent----concat()?
串連兩個數組或者多個數組,並返回結果

86、split
分割字串,獲得數組

87、substring
擷取字串
包括開始不包括結束

88、indexOf
從前往後檢索字串

89、charAt
擷取某個字元

90、var re=//; 聲明一個正則對象

91、var re=new RegExp() 聲明一個正則對象

92、search 尋找一個字串,只找第一次出現的位置

93、month ===============?
match-匹配符合正則的東西,挑東西返回數組


94、test 用正則檢驗字串是否符合它所規定的規則

95、replace 替換,把符合規則的東西替換成字串

96、量詞:{n,m}至少出現n次,最多出現m次
+許多
* {0,} 0到任意次
?零次或者一次{0,1}
{n,}最少n次,最多不限
{,m}最少不限最多m次
{n}正好n次

97、字元類:
1[abc]2 1和2中間出現a或b或c
[^0-9]排除數字以外所有都可以
[a-z]所有的英文
[0-9]所有的數字

98、標識: i 忽略大小寫 g 全域匹配

99、首尾: ^ $

100、轉義:
\d 尋找數字 [0-9]
\D 除了數字[^0-9]
\s 空白
\b 單詞邊界
\w 數字字母底線--使用者名稱
. 任一字元
\. 代表.本身

101、var oDate= new Date() 擷取目前時間

102、getHours() 擷取小時

103、getMinutes() 擷取分鐘

104、getSeconds() 擷取秒

105、getFullYear() 擷取年

106、getDay() 擷取星期

107、getDate() 擷取當前的時間日期

108、setDate() 設定一個月的某一天

109、var oImg=new Image() 建立一個image對象

110、什麼叫ajax
通過XMLHttpRequest與伺服器通訊,進行無重新整理操作

ajax採用的是非同步請求

111、同步與非同步區別

同步就是同一時間做一件事
非同步就是同一時間做多件事

112、ajax的互動方式
1)發送資料並返回 ()(註冊)
2)只發送不返回 ()========?例子
3)不發送只返回 (股票)

113、post與get的區別
1)發送方式不一樣:get載入網址問好後面的
post把資料放在一個傳輸體中發送上去的

2)安全不一樣
post相對安全,get不安全

3)網址長度不一樣
ie下get網址超過2048位元組將被截斷
post沒有上限

4)緩衝問題
get可以緩衝網址,post不會緩衝網址

5)用途不一樣
get:查詢資料,post修改資料

114、發送資料是什麼樣的?
串聯化資料:key1=value1&key2=value2

115、返回資料是什麼樣的?
返回的是字串

116、跨域:jsonp?
(利用script標籤跨域)
在頭部建立個script標籤,
改變script標籤中src

117、ajax的編寫步驟?
1)建立ajax對象(要有手機)
2)連結的伺服器open(撥號)
3)監聽資料返回onreadystatechange(聽)
4)發送資料send(說)
5)close(忽略)(掛了)

118、json怎麼取?=========?
通過串聯化資料

119、什麼是對象?
對象是一個整體,對外提供一些操作。||
黑盒子,看不到內部的樣子,
能看到表面的按鈕

120、什麼是物件導向?
使用對象時,只關注對象提供的功能,
不關注其內部細節,比如jQuery ||
使用一個東西的時候,不去管內部是
怎麼做的,只用好它的功能

下面是整理出來的一些函數,方便大家的學習和使用

/**function obj$(id)                       根據id得到對象function val$(id)                       根據id得到對象的值function trim(str)                      刪除左邊和右邊空格function ltrim(str)                     刪除左邊空格function rtrim (str)                    刪除右邊空格function isEmpty(str)                   字串是否有值function equals(str1, str2)             比較兩字串是否相等function equalsIgnoreCase(str1, str2)   忽略大小寫比較兩個字串是否相等function isChinese(str)                 判斷是否中文function isEmail(strEmail)              是否電子郵件function isImg(str)                     是否是一個圖片格式的檔案jpg|jpeg|swf|giffunction isInteger(str)                 是否是一個整數function isFloat                        是否是一個浮點數function isPost(str)                     是否郵編(1位至6位function isMobile(str)                  是否是手機號function isPhone(str)                   是否是電話號碼必須包含區號,可以含有分機號function isQQ(str)                      是否合法的QQ號碼          function isIP(str)                      是否是合法的IPfunction isDate(str)                     是否日期類型(例:2005-12-12)function isIdCardNo(idNumber)           是否是合法的社會安全號碼**/ /** * 替換 * @param {Object} str * @param {Object} oldStr * @param {Object} newStr * @return {TypeName}  */ function repalce(str, oldStr, newStr) {     var reg = eval_r("/" + oldStr + "/g");     return str.replace(reg, newStr); }  /** * 左邊截取 * @param {Object} str * @param {Object} n * @return {TypeName}  */ function left(str, n) {     if (str.length > 0) {         if (n > str.length)             n = str.length;         return str.substr(0, n);     } else {         return;     } }  /** * 右邊截取 * @param {Object} str * @param {Object} n * @return {TypeName}  */ function right(str, n) {     if (str.length > 0) {         if (n >= str.length)             return str;         return str.substr(str.length - n, n);     } else {         return;     } }    function strip(str) {     if (typeof str == 'string')         return str.replace(/^\s+/, '').replace(/(^\s*)|(\s*$)/g, ''); }  function stripTags(str) {     if (typeof str == 'string')         return str.replace(/<\/?[^>]+>/gi, '').replace(/(^\s*)|(\s*$)/g, ''); } /** * 判斷某個字元的長度在s和l之間 * @param {Object} str * @param {Object} s * @param {Object} l * @return {TypeName}  */ function isLen(str, s, l) {     str = Trim(str)     if (str.length > s && str.length < l) {         return true;     } else {         return false;     } }  /** * 是否為數字 * @param {Object} str * @return {TypeName}  */ function isNumber(str){     if (/^\d+$/.test(str)){         return true;     }else{         return false;     } }    function isLetters(str){     if (/^[A-Za-z0-9]+$/.test(str)){         return true;     }else{         return false;     } }  function isLetter(str){     if (/^[A-Za-z]+$/.test(str)){         return true;     }else{         return false;     } }  function isUpper(str){     if (/^[A-Z]+$/.test(str)){         return true;     }else{         return false;     } }  function isLower(str){     if (/^[a-z]+$/.test(str)){         return true;     }else{         return false;     } }   /***根據對象的id得到對象*id:對象的id*/ function obj(id) {     return document.getElementById(id); }  /***根據對象的id得到對象的值*id:對象的id*/ function val(id) {     var obj = document.getElementById(id);     if(obj !== null)     {         return obj.value;     }     return null; }  /***去掉字串的前後空格*str:將要除去空格的字串*/ function trim(str) {     return str.replace(/(^\s*)|(\s*$)/g, ''); }  /***去掉字串前的空格*str:將要除去空格的字串*/ function ltrim(str) {     return str.replace(/^\s*/g,''); }  /***去掉字串後的空格*str:將要除去空格的字串*/ function rtrim(str) {     return str.replace(/\s*$/,''); }  /***字串是否有值*str:要檢測的字串*/ function isEmpty(str) {     if(str != null && str.length > 0)     {         return true;     }     return false; }  /***比較兩個字串是否相等*str1:要比較的字串1*str2:要比較的字串2*/ function equals(str1, str2) {     if(str1 == str2)     {         return true;     }     return false; }  /***忽略大小寫比較兩個字串是否相等*str1:要比較的字串1*str2:要比較的字串2*/ function equalsIgnoreCase(str1, str2) {     if(str1.toUpperCase() == str2.toUpperCase())     {         return true;     }     return false; }  /***是否是中文*str:要檢測的字串*/ function isChinese(str) {    var str = str.replace(/(^\s*)|(\s*$)/g,'');    if (!(/^[\u4E00-\uFA29]*$/.test(str)            && (!/^[\uE7C7-\uE7F3]*$/.test(str))))    {       return false;    }    return true; }  /***是否是Email*str:要檢測的字串*/ function isEmail(str) {     if(/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str))     {         return true     }     return false; }  /***是否是圖片格式檔案*str:要測試的檔案名稱*/ function isImg(str) {     var objReg = new RegExp("[.]+(jpg|jpeg|swf|gif){1}quot;, "gi");     if(objReg.test(str))     {         return true;     }     return false; }  /***是否是一個整數*str:要檢測的字串*/ function isInteger(str) {     if(/^-?\d+$/.test(str))     {         return true;     }     return false; }  /***是否是一個浮點數*str:要檢測的字串*/ function isFloat(str) {     if(/^(-?\d+)(\.\d+)?$/.test(str))     {         return true;     }     return false; }  /***是否是郵編*str:要檢測的字串*/ function isPost(str) {     if(/^\d{1,6}$/.test(str))     {         return true;     }     return false; }  /***是否是手機號碼*str:要檢測的字串*/ function isMobile(str) {     if(/^1[35]\d{9}/.test(str))       {           return true;       }     return false; }  /***是否是電話號碼*str:要檢測的字串*電話號碼必須有區號,可以有分機號*/ function isPhone(str) {     if(/^(0[1-9]\d{1,2}-)\d{7,8}(-\d{1,8})?/.test(str))     {         return true;     }     return false; }  /***是否是合法的QQ號碼*str:要檢測的字串*/ function isQQ(str){     if(/^\d{5,9}$/.test(str))     {         return true;     }     return false; }  /***是否是合法的IP*str:要檢測的字串*/ function isIP(str){     var reg = /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/;     if(reg.test(str))     {         return true;     }     return false; }  /***是否是一合法日期*str:要檢測的字串*/ function isDate(str) {     var reg = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/;     if(reg.test(str))     {         return true;     }     return false;    } 

現在已經你已經學習了 JavaScript,接下來該學習什麼呢?

下一步應該學習 HTML DOM 和 DHTML。

jQuery

jQuery 是一個 JavaScript 庫。

jQuery 極大地簡化了 JavaScript 編程。

jQuery 很容易學習。

 

jQuery Mobile

jQuery Mobile 是一個為觸控最佳化的架構,用於建立移動 web 應用程式。

jQuery 適用於所有流行的智能手機和平板電腦。

jQuery Mobile 構建於 jQuery 庫之上,這使其更易學習,如果您通曉 jQuery 的話。

它使用 HTML5、CSS3、JavaScript 和 AJAX 通過儘可能少的代碼來完成對頁面的布局。

 

HTML DOM

HTML DOM 定義了訪問和操作 HTML 文檔的標準方法。

HTML DOM 獨立於平台和語言,可被任何程式設計語言使用,比如 Java、JavaScript 和 VBscript。

 

AJAX

AJAX = 非同步 JavaScript 和 XML。

AJAX 不是一種新的程式設計語言,而是一種使用現有標準的新方法。

通過與伺服器進行資料交換,AJAX 可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新。

有很多使用 AJAX 的應用程式案例:新浪微博、Google 地圖、開心網等等。

 

JSON

JSON:JavaScript 物件標記法(JavaScript Object Notation)。

JSON 是儲存和交換文本資訊的文法。類似 XML。

JSON 比 XML 更小、更快,更易解析。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.