$(document).ready(function(){
創(chuàng)新互聯(lián)是一家集成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)站頁面設計、網(wǎng)站優(yōu)化SEO優(yōu)化為一體的專業(yè)網(wǎng)站制作公司,已為成都等多地近百家企業(yè)提供網(wǎng)站建設服務。追求良好的瀏覽體驗,以探求精品塑造與理念升華,設計最適合用戶的網(wǎng)站頁面。 合作只是第一步,服務才是根本,我們始終堅持講誠信,負責任的原則,為您進行細心、貼心、認真的服務,與眾多客戶在蓬勃發(fā)展的市場環(huán)境中,互促共生。
$("#add").click(function(){
var oldValue=parseInt($(this).val());//取出現(xiàn)在的值,并使用parseInt轉(zhuǎn)為int類型數(shù)據(jù)
oldValue++;//自加1
$(this).val(oldValue);//將增加后的值付給原控件
});
});
PS:attr更新的是組件的屬性(例如可以修改type等),input的控件值要使用val()去修改,當然,如果是div的話就得用html()獲取或者修改。
javascript 中的?是屬性。例如:var text={??x:1,y:2?? }? ? ,? 輸出:text.x?????? 那么值就是1?? 如此而已。
javascript的相關(guān)概念:
語句
JavaScript程序是由若干語句組成的,語句是編寫程序的指令。JavaScript提供了完整的基本編程語句,它們是:
賦值語句、switch選擇語句、while循環(huán)語句、for循環(huán)語句、for each循環(huán)語句、do...while循環(huán)語句、break循環(huán)中止語句、continue循環(huán)中斷語句、with語句、try…catch語句、if語句(if..else,if…else if…)。
函數(shù)
函數(shù)是命名的語句段,這個語句段可以被當作一個整體來引用和執(zhí)行。使用函數(shù)要注意以下幾點:
1)函數(shù)由關(guān)鍵字function定義(也可由Function構(gòu)造函數(shù)構(gòu)造)
2)使用function關(guān)鍵字定義的函數(shù)在一個作用域內(nèi)是可以在任意處調(diào)用的(包括定義函數(shù)的語句前);而用var關(guān)鍵字定義的必須定義后才能被調(diào)用
3)函數(shù)名是調(diào)用函數(shù)時引用的名稱,它對大小寫是敏感的,調(diào)用函數(shù)時不可寫錯函數(shù)名
4)參數(shù)表示傳遞給函數(shù)使用或操作的值,它可以是常量,也可以是變量,也可以是函數(shù),在函數(shù)內(nèi)部可以通過arguments對象(arguments對象是一個偽數(shù)組,屬性callee引用被調(diào)用的函數(shù))訪問所有參數(shù)
5)return語句用于返回表達式的值。
6)yield語句扔出一個表達式,并且中斷函數(shù)執(zhí)行直到下一次調(diào)用next。
一般的函數(shù)都是以下格式:
function myFunction(params){
//執(zhí)行的語句
}
函數(shù)表達式:
var myFunction=function(params){
//執(zhí)行的語句
}
var myFunction = function(){
//執(zhí)行的語句
}
myFunction();//調(diào)用函數(shù)
匿名函數(shù),它常作為參數(shù)在其他函數(shù)間傳遞:
window.addEventListener('load',function(){
//執(zhí)行的語句
},false);
對象
JavaScript的一個重要功能就是面向?qū)ο蟮墓δ?,通過基于對象的程序設計,可以用更直觀、模塊化和可重復使用的方式進行程序開發(fā)。
一組包含數(shù)據(jù)的屬性和對屬性中包含數(shù)據(jù)進行操作的方法,稱為對象。比如要設定網(wǎng)頁的背景顏色,所針對的對象就是document,所用的屬性名是bgcolor,如document.bgcolor="blue",就是表示使背景的顏色為藍色。
事件
用戶與網(wǎng)頁交互時產(chǎn)生的操作,稱為事件。事件可以由用戶引發(fā),也可能是頁面發(fā)生改變,甚至還有你看不見的事件(如Ajax的交互進度改變)。絕大部分事件都由用戶的動作所引發(fā),如:用戶按鼠標的按鍵,就產(chǎn)生click事件,若鼠標的指針在鏈接上移動,就產(chǎn)生mouseover事件等等。在JavaScript中,事件往往與事件處理程序配套使用。
而對事件的處理,W3C的方法是用addEventListener()函數(shù),它有三個參數(shù):事件,引發(fā)的函數(shù),是否使用事件捕捉。為了安全性,建議將第三個參數(shù)始終設置為false
傳統(tǒng)的方法就是定義元素的on…事件,它就是W3C的方法中的事件參數(shù)前加一個“on”。而IE的事件模型使用attachEvent和dettachEvent對事件進行綁定和刪除。JavaScript中事件還分捕獲和冒泡兩個階段,但是傳統(tǒng)綁定只支持冒泡事件。
變量
1、常用類型
Object:對象
Array:數(shù)組
Number:數(shù)
Boolean:布爾值,只有true和false兩個值,是所有類型中占用內(nèi)存最少的
null:一個空值,唯一的值是null,表空引用
undefined:沒有定義或賦值的變量
2、命名形式
一般形式是:
var 變量名表;
其中,var是javascript的保留字,表面接下來是變量說明,變量名表是用戶自定義標識符,變量之間用逗號分開。和C++等程序不同,在javascript中,變量說明不需要給出變量的數(shù)據(jù)類型。此外,變量也可以不說明而直接使用。
3、作用域
變量的作用域由聲明變量的位置決定,決定哪些腳本命令可訪問該變量。在函數(shù)外部聲明的變量稱為全局變量,其值能被所在HTML文件中的任何腳本命令訪問和修改。在函數(shù)內(nèi)部聲明的變量稱為局部變量。只有當函數(shù)被執(zhí)行時,變量被分配臨時空間,函數(shù)結(jié)束后,變量所占據(jù)的空間被釋放。局部變量只能被函數(shù)內(nèi)部的語句訪問,只對該函數(shù)是可見的,而在函數(shù)外部是不可見的。
運算符
javascript提供了豐富的運算功能,包括算術(shù)運算、關(guān)系運算、邏輯運算和連接運算。
1.算術(shù)運算符
javascript中的算術(shù)運算符有單目運算符和雙目運算符。雙目運算符包括:+(加)、-(減)、*(乘)、/(除)、%(取模)、|(按位或)、(按位與)、(左移)、(右移)等。單目運算符有:-(取反)、~(取補)、++(遞加1)--(遞減1)等。
2.關(guān)系運算符
關(guān)系運算符又稱比較運算,運算符包括:(小于)、=(小于等于)、(大于)、=(大于等于)、==(等于)和!=(不等于)以及 ===) 和 !==。
關(guān)系運算的運算結(jié)果為布爾值,如果條件成立,則結(jié)果為true,否則為false。
3.邏輯運算符
邏輯運算符有:(邏輯與)、||(邏輯或)、!(取反,邏輯非)、^(邏輯異或)。
4.字符串連接運算符
連接運算用于字符串操作,運算符為+(用于強制連接),將兩個或多個字符串連結(jié)為一個字符串。
5.三目操作符?
三目操作符“?:”格式為:
操作數(shù)?表式1:表達式2
三目操作符“?:”構(gòu)成的表達式,其邏輯功能為:若操作數(shù)的結(jié)果為true,則表述式的結(jié)果為表達式1,否則為表達式2。例如max=(ab)?a:b;該語句的功能就是將a,b中的較大的數(shù)賦給max。
相關(guān)規(guī)則
在JavaScript中,“==="是全同運算符,只有當值相等,數(shù)據(jù)類型也相等時才成立。
等同運算符“=="的比較規(guī)則:
當兩個運算數(shù)的類型不同時:將他們轉(zhuǎn)換成相同的類型。
1)一個數(shù)字與一個字符串,字符串轉(zhuǎn)換成數(shù)字之后,進行比較。
2)true轉(zhuǎn)換為1、false轉(zhuǎn)換為0,進行比較。
3)一個對象、數(shù)組、函數(shù)與 一個數(shù)字或字符串,對象、數(shù)組、函數(shù)轉(zhuǎn)換為原始類型的值,然后進行比較。(先使用valueOf,如果不行就使用toString)
4)其他類型的組合不相等。
JavaScript想兩個運算數(shù)類型相同,或轉(zhuǎn)換成相同類型后:
1)2個字符串:同一位置上的字符相等,2個字符串就相同。
2)2個數(shù)字:2個數(shù)字相同,就相同。如果一個是NaN,或兩個都是NaN,則不相同。
3)2個都是true,或者2個都是false,則相同。
4)2個引用的是同一個對象、函數(shù)、數(shù)組,則他們相等,如果引用的不是同一個對象、函數(shù)、數(shù)組,則不相同,即使這2個對象、函數(shù)、數(shù)組可以轉(zhuǎn)換成完全相等的原始值。
5)2個null,或者2個都是未定義的,那么他們相等。
而“===”是全同運算符,全同運算符遵循等同運算符的比較規(guī)則,但是它不對運算數(shù)進行類型轉(zhuǎn)換,當兩個運算數(shù)的類型不同時,返回false;只有當兩個運算數(shù)的類型相同的時候,才遵循等同運算符的比較規(guī)則進行比較。
例如:null==undefined 會返回真, 但是null===undefined 就會返回假!
表達式
表達式是指將常量、變量、函數(shù)、運算符和括號連接而成的式子。根據(jù)運算結(jié)果的不同,表達式可分為算術(shù)表達式、字符表達式、和邏輯表達式。
腳本語言
不同于服務器端腳本語言,例如PHP與ASP,JavaScript是客戶端腳本語言,也就是說JavaScript是在用戶的瀏覽器上運行,不需要服務器的支持而可以獨立運行。所以在早期程序員比較青睞于JavaScript以減少對服務器的負擔,而與此同時也帶來另一個問題:安全性。而隨著服務器的強壯,雖然程序員更喜歡運行于服務端的腳本以保證安全,但JavaScript仍然以其跨平臺、容易上手等優(yōu)勢大行其道。
JavaScript是一種腳本語言,其源代碼在發(fā)往客戶端運行之前不需經(jīng)過編譯,而是將文本格式的字符代碼發(fā)送給瀏覽器由瀏覽器解釋運行。解釋語言的弱點是安全性較差,而且在JavaScript中,如果一條運行不了,那么下面的語言也無法運行。而且由于每次重新加載都會重新解譯,加載后,有些代碼會延遲至運行時才解譯,甚至會多次解譯,所以速度較慢。
與其相對應的是編譯語言,例如Java。Java的源代碼在傳遞到客戶端運行之前,必須經(jīng)過編譯,因而客戶端上必須具有相應平臺上的仿真器或解釋器,它可以通過編譯器或解釋器實現(xiàn)獨立于某個特定的平臺編譯代碼的束縛。但是它必須在服務器端進行編譯,這樣就拖延了時間。但因為已經(jīng)封裝,所以能保證安全性。
Javascript庫
庫,指得是可以方便應用到現(xiàn)有開發(fā)體系中的、現(xiàn)成的代碼資源。庫不僅為大部分日常的DOM腳本編程工作提供了快捷的解決方案,而且也提供了許多獨特的工具。雖然庫使用起來很方便,但它們也并非能解決你所有的問題。在使用庫之前,一定要保證真正理解javascript的DOM原理。
這些庫一般是一個(或多個)js(Javascript的縮寫)文件,只要把他們導入你的網(wǎng)頁就能使用了。
常用的庫有:
jQuery:javascript庫中的新成員,提供css和xpath選擇符查找元素、ajax、動畫效果等
JSer: 國人開發(fā)的一款全功能的開源腳本框架. 借助JSer,可以便捷的操作DOM、CSS樣式訪問、屬性讀寫、事件綁定、行為切換、動態(tài)載入、數(shù)據(jù)緩存、URL與AJAX等眾多功能。
dojo:一個巨大的庫,包括的東西很多,dijit和dojox是dojo的擴展,幾乎你想要的各種javascript程序都包括了。
prototype:一個非常流行的庫,使用了原型鏈向javascript中添加了很多不錯的函數(shù)
YUI:(YahooYUI庫)yahoo!用戶界面,非常實用,提供各種解決方案。
ExtJs:組件非常豐富,皮膚也很漂亮,動畫效果也豐富。
語句
JavaScript程序是由若干語句組成的,語句是編寫程序的指令。JavaScript提供了完整的基本編程語句,它們是:
賦值語句、switch選擇語句、while循環(huán)語句、for循環(huán)語句、for each循環(huán)語句、do...while循環(huán)語句、break循環(huán)中止語句、continue循環(huán)中斷語句、with語句、try…catch語句、if語句(if..else,if…else if…)。
函數(shù)
函數(shù)是命名的語句段,這個語句段可以被當作一個整體來引用和執(zhí)行。使用函數(shù)要注意以下幾點:
1)函數(shù)由關(guān)鍵字function定義(也可由Function構(gòu)造函數(shù)構(gòu)造)
2)使用function關(guān)鍵字定義的函數(shù)在一個作用域內(nèi)是可以在任意處調(diào)用的(包括定義函數(shù)的語句前);而用var關(guān)鍵字定義的必須定義后才能被調(diào)用
3)函數(shù)名是調(diào)用函數(shù)時引用的名稱,它對大小寫是敏感的,調(diào)用函數(shù)時不可寫錯函數(shù)名
4)參數(shù)表示傳遞給函數(shù)使用或操作的值,它可以是常量,也可以是變量,也可以是函數(shù),在函數(shù)內(nèi)部可以通過arguments對象(arguments對象是一個偽數(shù)組,屬性callee引用被調(diào)用的函數(shù))訪問所有參數(shù)
5)return語句用于返回表達式的值。
6)yield語句扔出一個表達式,并且中斷函數(shù)執(zhí)行直到下一次調(diào)用next。
一般的函數(shù)都是以下格式:
function myFunction(params){
//執(zhí)行的語句
}
函數(shù)表達式:
var myFunction=function(params){
//執(zhí)行的語句
}
var myFunction = function(){
//執(zhí)行的語句
}
myFunction();//調(diào)用函數(shù)
匿名函數(shù),它常作為參數(shù)在其他函數(shù)間傳遞:
window.addEventListener('load',function(){
//執(zhí)行的語句
},false);
對象
JavaScript的一個重要功能就是面向?qū)ο蟮墓δ埽ㄟ^基于對象的程序設計,可以用更直觀、模塊化和可重復使用的方式進行程序開發(fā)。
一組包含數(shù)據(jù)的屬性和對屬性中包含數(shù)據(jù)進行操作的方法,稱為對象。比如要設定網(wǎng)頁的背景顏色,所針對的對象就是document,所用的屬性名是bgcolor,如document.bgcolor="blue",就是表示使背景的顏色為藍色。
事件
用戶與網(wǎng)頁交互時產(chǎn)生的操作,稱為事件。事件可以由用戶引發(fā),也可能是頁面發(fā)生改變,甚至還有你看不見的事件(如Ajax的交互進度改變)。絕大部分事件都由用戶的動作所引發(fā),如:用戶按鼠標的按鍵,就產(chǎn)生click事件,若鼠標的指針在鏈接上移動,就產(chǎn)生mouseover事件等等。在JavaScript中,事件往往與事件處理程序配套使用。
而對事件的處理,W3C的方法是用addEventListener()函數(shù),它有三個參數(shù):事件,引發(fā)的函數(shù),是否使用事件捕捉。為了安全性,建議將第三個參數(shù)始終設置為false
傳統(tǒng)的方法就是定義元素的on…事件,它就是W3C的方法中的事件參數(shù)前加一個“on”。而IE的事件模型使用attachEvent和dettachEvent對事件進行綁定和刪除。JavaScript中事件還分捕獲和冒泡兩個階段,但是傳統(tǒng)綁定只支持冒泡事件。
變量
1、常用類型
Object:對象
Array:數(shù)組
Number:數(shù)
Boolean:布爾值,只有true和false兩個值,是所有類型中占用內(nèi)存最少的
null:一個空值,唯一的值是null,表空引用
undefined:沒有定義或賦值的變量
2、命名形式
一般形式是:
var 變量名表;
其中,var是javascript的保留字,表面接下來是變量說明,變量名表是用戶自定義標識符,變量之間用逗號分開。和C++等程序不同,在javascript中,變量說明不需要給出變量的數(shù)據(jù)類型。此外,變量也可以不說明而直接使用。
3、作用域
變量的作用域由聲明變量的位置決定,決定哪些腳本命令可訪問該變量。在函數(shù)外部聲明的變量稱為全局變量,其值能被所在HTML文件中的任何腳本命令訪問和修改。在函數(shù)內(nèi)部聲明的變量稱為局部變量。只有當函數(shù)被執(zhí)行時,變量被分配臨時空間,函數(shù)結(jié)束后,變量所占據(jù)的空間被釋放。局部變量只能被函數(shù)內(nèi)部的語句訪問,只對該函數(shù)是可見的,而在函數(shù)外部是不可見的。
運算符
javascript提供了豐富的運算功能,包括算術(shù)運算、關(guān)系運算、邏輯運算和連接運算。
1.算術(shù)運算符
javascript中的算術(shù)運算符有單目運算符和雙目運算符。雙目運算符包括:+(加)、-(減)、*(乘)、/(除)、%(取模)、|(按位或)、(按位與)、(左移)、(右移)等。單目運算符有:-(取反)、~(取補)、++(遞加1)--(遞減1)等。
2.關(guān)系運算符
關(guān)系運算符又稱比較運算,運算符包括:(小于)、=(小于等于)、(大于)、=(大于等于)、==(等于)和!=(不等于)以及 ===) 和 !==。
關(guān)系運算的運算結(jié)果為布爾值,如果條件成立,則結(jié)果為true,否則為false。
3.邏輯運算符
邏輯運算符有:(邏輯與)、||(邏輯或)、!(取反,邏輯非)、^(邏輯異或)。
4.字符串連接運算符
連接運算用于字符串操作,運算符為+(用于強制連接),將兩個或多個字符串連結(jié)為一個字符串。
5.三目操作符?
三目操作符“?:”格式為:
操作數(shù)?表式1:表達式2
三目操作符“?:”構(gòu)成的表達式,其邏輯功能為:若操作數(shù)的結(jié)果為true,則表述式的結(jié)果為表達式1,否則為表達式2。例如max=(ab)?a:b;該語句的功能就是將a,b中的較大的數(shù)賦給max。
相關(guān)規(guī)則
在JavaScript中,“==="是全同運算符,只有當值相等,數(shù)據(jù)類型也相等時才成立。
等同運算符“=="的比較規(guī)則:
當兩個運算數(shù)的類型不同時:將他們轉(zhuǎn)換成相同的類型。
1)一個數(shù)字與一個字符串,字符串轉(zhuǎn)換成數(shù)字之后,進行比較。
2)true轉(zhuǎn)換為1、false轉(zhuǎn)換為0,進行比較。
3)一個對象、數(shù)組、函數(shù)與 一個數(shù)字或字符串,對象、數(shù)組、函數(shù)轉(zhuǎn)換為原始類型的值,然后進行比較。(先使用valueOf,如果不行就使用toString)
4)其他類型的組合不相等。
JavaScript想兩個運算數(shù)類型相同,或轉(zhuǎn)換成相同類型后:
1)2個字符串:同一位置上的字符相等,2個字符串就相同。
2)2個數(shù)字:2個數(shù)字相同,就相同。如果一個是NaN,或兩個都是NaN,則不相同。
3)2個都是true,或者2個都是false,則相同。
4)2個引用的是同一個對象、函數(shù)、數(shù)組,則他們相等,如果引用的不是同一個對象、函數(shù)、數(shù)組,則不相同,即使這2個對象、函數(shù)、數(shù)組可以轉(zhuǎn)換成完全相等的原始值。
5)2個null,或者2個都是未定義的,那么他們相等。
而“===”是全同運算符,全同運算符遵循等同運算符的比較規(guī)則,但是它不對運算數(shù)進行類型轉(zhuǎn)換,當兩個運算數(shù)的類型不同時,返回false;只有當兩個運算數(shù)的類型相同的時候,才遵循等同運算符的比較規(guī)則進行比較。
例如:null==undefined 會返回真, 但是null===undefined 就會返回假!
表達式
表達式是指將常量、變量、函數(shù)、運算符和括號連接而成的式子。根據(jù)運算結(jié)果的不同,表達式可分為算術(shù)表達式、字符表達式、和邏輯表達式。
腳本語言
不同于服務器端腳本語言,例如PHP與ASP,JavaScript是客戶端腳本語言,也就是說JavaScript是在用戶的瀏覽器上運行,不需要服務器的支持而可以獨立運行。所以在早期程序員比較青睞于JavaScript以減少對服務器的負擔,而與此同時也帶來另一個問題:安全性。而隨著服務器的強壯,雖然程序員更喜歡運行于服務端的腳本以保證安全,但JavaScript仍然以其跨平臺、容易上手等優(yōu)勢大行其道。
JavaScript是一種腳本語言,其源代碼在發(fā)往客戶端運行之前不需經(jīng)過編譯,而是將文本格式的字符代碼發(fā)送給瀏覽器由瀏覽器解釋運行。解釋語言的弱點是安全性較差,而且在JavaScript中,如果一條運行不了,那么下面的語言也無法運行。而且由于每次重新加載都會重新解譯,加載后,有些代碼會延遲至運行時才解譯,甚至會多次解譯,所以速度較慢。
與其相對應的是編譯語言,例如Java。Java的源代碼在傳遞到客戶端運行之前,必須經(jīng)過編譯,因而客戶端上必須具有相應平臺上的仿真器或解釋器,它可以通過編譯器或解釋器實現(xiàn)獨立于某個特定的平臺編譯代碼的束縛。但是它必須在服務器端進行編譯,這樣就拖延了時間。但因為已經(jīng)封裝,所以能保證安全性。
Javascript庫
庫,指得是可以方便應用到現(xiàn)有開發(fā)體系中的、現(xiàn)成的代碼資源。庫不僅為大部分日常的DOM腳本編程工作提供了快捷的解決方案,而且也提供了許多獨特的工具。雖然庫使用起來很方便,但它們也并非能解決你所有的問題。在使用庫之前,一定要保證真正理解javascript的DOM原理。
這些庫一般是一個(或多個)js(Javascript的縮寫)文件,只要把他們導入你的網(wǎng)頁就能使用了。
常用的庫有:
jQuery:javascript庫中的新成員,提供css和xpath選擇符查找元素、ajax、動畫效果等
JSer: 國人開發(fā)的一款全功能的開源腳本框架. 借助JSer,可以便捷的操作DOM、CSS樣式訪問、屬性讀寫、事件綁定、行為切換、動態(tài)載入、數(shù)據(jù)緩存、URL與AJAX等眾多功能。
dojo:一個巨大的庫,包括的東西很多,dijit和dojox是dojo的擴展,幾乎你想要的各種javascript程序都包括了。
prototype:一個非常流行的庫,使用了原型鏈向javascript中添加了很多不錯的函數(shù)
YUI:(YahooYUI庫)yahoo!用戶界面,非常實用,提供各種解決方案。
ExtJs:組件非常豐富,皮膚也很漂亮,動畫效果也豐富。
同學 你太小瞧jQuery的威力了,在提供解決方案前,先簡單說一下,循環(huán)mouseover、ajax的問題,
因為mouseover是事件,內(nèi)部代碼不是在ready的時候執(zhí)行,所以和ajax一樣,等同于是是異步執(zhí)行的,加上js的變量作用域,你的代碼會出現(xiàn)這樣的問題:你在mouseover 或者 ajax的success中訪問外層的變量i,發(fā)現(xiàn)i永遠是最大值,效果就是不管你觸摸哪條線,都只有最后一條線有反映。
正確的jQuey用法如下
//代碼就沒有全寫了,使用this,可以免掉for循環(huán)
//給所有滿足條件的元素綁事件
$('.path_n').mouseover(function(){
var?$th=$(this);//用this來區(qū)分當前是在哪個元素上移動,這里的this為鼠標當前移入的元素對象
//后續(xù)取attribute可以通過jQuery的attr方法來取
var?real_data=$th.attr('real_data');
var?abnormal_data=$th.attr('abnormal_data');
//.....
$.ajax({
//...
});
});
a++ 先運算后加自
++a 先自加后運算
如
1----
a=1
a++ * 1 = 1
2----
b=1
++b * 1 = 2
a=i++;??//在這里,a獲得的是i遞增之前的值,然后i再遞增
它相當于兩個語句:
a=i;
i++;
所以通常是不這樣使用++的,因為一般來說都是希望i先遞增然后再把結(jié)果賦值給a
改成下面這樣就能達到你的目的:
a=++i;
它相當于兩個語句:
++i;
a=i;