1. 程式人生 > >js和jQuery

js和jQuery

返回值 arr 獲得 js代碼 ria ttr class demo after

1.NAN:not a number,Number.NaN 是一個特殊值,說明某些算術運算(如求負數的平方根)的結果不是數字。方法 parseInt() 和 parseFloat() 在不能解析指定的字符串時就返回這個值。對於一些常規情況下返回有效數字的函數,也可以采用這種方法,用 Number.NaN 說明它的錯誤情況。

JavaScript 以 NaN 的形式輸出 Number.NaN。請註意,NaN 與其他數值進行比較的結果總是不相等的,包括它自身在內。因此,不能與 Number.NaN 比較來檢測一個值是不是數字,而只能調用 isNaN() 來比較。

如:var month=30 if(month<1||month>12){month=Number.NAN}

那麽alert(month==NAN),alert(month="NAN")都為false,因為NAN和誰都不相等,因此不能通過NAN來判斷某個變量是否是數字,想要校驗某個變量是否是數字,可以用isNAN(variable)來判斷,true為數字,false為非數字。 var a=parseInt(month)當month為非數字時,則a也是NAN.

2.<script>標簽可以寫在任意位置,包括普通標簽後面,在script標簽裏,可以通過document,write()方法往頁面中寫入內容。如:

<div><script>document,write("你好")</script></div>等價於<div>你好</div>

這種方法常常用於動態的寫入頁面內容時,在不確定元素的位置通過js來使內容動態變化。jsp編譯成java時,常常使用這種方法。

3.js方法裏return,return true和return false的區別:

首先,在循環遍歷中,用js方法遍歷時,想中斷遍歷用break和continue就行,和java中一樣。在jQuery遍歷中,$.each(arr,function(){})中,想要中斷遍歷,需要用return false和return true來操作。return false相當於break; return true相當於continue。

阻止默認的事件行為:用return false.如:表單的提交事件onsubmit=" return submit()"的submit()方法中,如果返回return false,則表單不再提交。再如<a>標簽中,onclick事件對應的函數返回false,則<a>不再執行href中的鏈接。值得註意的是,阻止默認的事件行為時,事件的方法前面必須加上return ,否則不能阻止默認事件。如:<a href="xxx" onclick="return demo()">才有效。

阻止默認的事件行為有一個方法是preventDefault()方法,該方法就是阻止默認的事件行為。需要註意的是,preventDefault()方法需要有參數e,如:$(‘a‘).click(function(e){e.preventDefault()})必須有參數e才能有效,寫this.preventDefault()也無效。

4.聲明式函數:function demo(){} 匿名式函數: var demo1=function(){} 在<script>裏寫demo()和demo1()來調用函數

在<script>裏直接寫js代碼,這些js代碼在頁面解析時就執行了。所以當寫document.getElementById()時,必須寫在id的下方。如果是寫在函數裏面就無所謂了,當調用該函數時才會被執行。在頁面加載事件中寫js代碼是在頁面解析完成後執行的,所以在<script>裏寫的代碼是優先於頁面加載事件執行的。

5.window.onload=function(){}形式的頁面加載事件,只能出現一次,出現多次的話,後面的會覆蓋前面的,$(function(){})形式的頁面加載事件可以出現多次,不會出現覆蓋的情況。

6.事件綁定的3種寫法:

1.在標簽中寫:<input type="text" onclick="demo()" >

2.用js綁定: var e=document.getElementById(); e.onclick=function(){}; e.onmouseup=function(){}

3.用jQuery綁定:$(選擇器).click(function(){});去掉on.

7.stopPropagation()方法:阻止事件傳播------event.stopPropagation();

舉例:<div id="e1" onclick="e1()">

<div id="e2" onclick="e2()"></div>

</div>

點擊e2區域的時候,e2也在e1內,則默認會觸發兩個點擊事件。如果只想觸發e2的點擊事件,不觸發e1的點擊事件,需要在function e2(event){}中添加阻止事件傳播的方法event.stopPropagation()方法,

就只執行e2,不執行e1點擊事件了。註意這個方法是寫在e2方法中,去阻止其他事件的發生,保證只執行e2方法。

其中event代表的含義是這個事件。

8.定時器:js提供了兩種定時器,一種是定時周期循環執行某個任務,一個是定時只執行一次某個任務。

setInterval(function,time):每隔time(ms)執行function函數,循環執行。從調用setInterval()方法起開始計時。

setTimeout(function,time):從調用該函數起,間隔time(ms)後執行一次function函數。

上面兩個函數都有返回值,返回值是一個定時器的id。想要消除定時器,消除定時任務,采用clearInterval(timeId)和clearTimeout(timeId)即可。其中timeId為setInterval()和setTimeout()的返回值

根據需求適時使用js提供的定時器。

9.preventDefault()方法和stopPropagation()方法都是通過事件對象event調用的,用e.onclick=function(event){}綁定事件時,寫在參數裏面就是事件對象。如果在元素標簽裏寫onclick=demo()的話,event就不能用參數了,而是在方法裏通過window.event來獲得event對象。

10.在js中this的用法:

通過e.onclick=function(){}綁定的事件,this就是觸發事件的元素對象。通過元素標簽裏寫onclick="demo()"綁定的事件,this代表的是window對象,如果想得到觸發事件的元素,可以在函數聲明時加參數obj,在調用時onclick="demo(this)"即可。

如:function demo(obj){}裏通過操作obj就可以操作觸發元素,但是需要在onclick="demo(this)"

通過$(選擇器).click(function(){})綁定的事件,this代表的是觸發事件的對象。

11.encodeURI()和decodeURI()的用法:

請求路徑url中帶中文時,防止出現錯誤,通過encodeURI()把中文轉成英文編碼,我們看到的類型http://www.baidu.com?name=%E5%BC%A0%E4%B8%89&password=123這樣的請求就是通過encodeURI(url)方法處理過的。通過decodeURI(url)來對英文編碼解碼成中文。

12.jQuery中addClass()和removeClass()的使用:

動態的給元素標簽添加class樣式,然後通過.class{}的css樣式來規定元素的樣式,和prop()和attr()有異曲同工之處,一個是動態添加屬性,一個是動態添加class樣式。

13.jQuery中append(),appendTo(),prepend(),prependTo(),afer(),before()方法詳解:

A.append(B)是把B元素追加到A元素內部的最後,等價於B.appendTo(A);

A.prepend(B)是把B元素追加到A元素內部的最前面,等價於B.prependTo(A);

A.after(B)是把B元素追加到A元素後面,是兄弟元素。

A.before(B)是把B元素追加到A元素前面,兄弟元素

14.children(),prev(),nextAll(),parent(),sibilings(),find()等查找方法的詳解:

children():獲得子元素,不包括孫子元素。可以有參數,參數相當於元素選擇器,只得到指定元素的子元素

prev():獲得上一個兄弟元素

nextAll():獲得元素的下面的所有兄弟元素,參數也可以是元素選擇器。

next():獲得元素的下一個兄弟元素,不能有參數,只能獲得下一個兄弟元素。

siblings():獲得元素的所有兄弟元素

find():參數為元素選擇器,獲得該元素子元素和孫子元素中所有指定的元素。只能獲得子元素和孫子元素中的指定元素,不獲得兄弟元素。

其中,操作子元素(孫子元素)的方法有:find(),children().操作兄弟元素的方法有:next(),nextAll(),siblings(),prev()

易錯點:這些查找元素的方法,大多數返回值都是數組類型,即使只得到一個元素,也是數組類型的,需要寫[0]才能得到單個元素。當得到單個元素後,在該元素的基礎上再繼續查找別的元素,一定要把該元素轉化成jQuery對象,因為這些方法都是jQuery對象的方法,當通過[0]操作時,已經轉化成了js對象,需要轉化成jQuery對象才能繼續使用這些方法。

當鏈式調用這些方法時,不需要每個方法都[0]處理,只要最後一個方法[0]處理即可,如$(obj).prev().prev().prev()[0]即可。

js和jQuery