真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

javascript處理,javascript處理數(shù)據(jù)

javascript中正確處理錯誤的方法有幾種

1.使用window.onerror指定錯誤處理函數(shù)。

公司主營業(yè)務:成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出南沙免費做網(wǎng)站回饋大家。

當有錯誤的時候,onerror會被callback。 當某個JavaScript block中有多個script錯誤時,第一個錯誤觸發(fā)后(回調(diào)callback),當前Javascript block后面的script會被自動Drop忽略掉,不被執(zhí)行。

如:

復制代碼 代碼如下:

html

head

titleTest/title

script type="text/javascript"

window.onerror = function(message, url, line)

{

alert("Error.\nMessage:"+ message +"\nUrl:" + url + "\nLine:" + line)

return true;

}

/script

/head

body

script type="text/javascript"

test();

test();

test();

test();

/script

script type="text/javascript"

test();

test();

test();

test();

/script

/body

/html

在上面的例子中只會有每一個block中的第一個test();產(chǎn)生error。觸發(fā)window.onerror回調(diào),后面的Javascript會被忽略掉。img

也支持 onerror img src="pic.gif" onerror = "javascript:alert("An

error occurred.");"/。onerror 是瀏覽器支持的對象。由瀏覽器決定是否可以使用,不是DOM標準。

2.使用Javascript中的try catch throw處理異常。

Javascript支持了try catch throw,Javascript中定義的異常:

(1)EvalError: An error occurs in the eval() function.

(2)RangeError:

A number value is greater then or less then the number that can be

represented in Javascript(Number.MAX_VALUE and Number.MIN_VAKUE).

(3)ReferenceError: An illegal reference is used.

(4)SyntaxError:

A syntax error occus inside of an eval() function call. All other

syntax error are reorted by the browser and cannot be handled with a

try...catch statement.

(5)TypeError. A variables type is unexpected. 6.URIError. An error ocuurs in the encodeURI() or the decodeURI() function.

如:

復制代碼 代碼如下:

script type="text/javascript"

function CreateError()

{

throw new Error("Created error by custom.");

}

try

{

//throw a error from a function just want to see the call stack in firefox.

CreateError();

}

catch(error)

{

var errorMsg = ("Message: " + error.message + "\n");

if(typeof(error.stack)!=undefined)

{

//FF

errorMsg += ("Line Number: " + error.lineNumber + "\n");

errorMsg += ("File Name: " + error.fileName + "\n");

errorMsg += ("Stack Trace:\n" + error.stack + "\n");

}

else

{

//IE

errorMsg += ("Description: " + error.description + "\n");

errorMsg += ("Number: " + error.number + "\n");

}

alert(errorMsg);

}

finally

{

//alert("End try catch.message from finally block.");

}

/script

Error.message是IE和FireFox都支持的屬性。

IE支持description 和 number屬性。

FF支持fileName lineNumber 和 stack 屬性。

由于Javascript是弱類型的語言。

所以在catch部分只能catch一次,不能像C#這樣的語言可以寫多個catch,catch不同類型的exception。

但是可以用 instanceof ErrorType的方式實現(xiàn)類似的功能。

如:

復制代碼 代碼如下:

script type="text/javascript"

try

{ //Syntax Error

//eval("alert a");

//Custom Error

throw new Error("An error occured.");

}

catch(error)

{

if(error instanceof SyntaxError)

{

alert("Syntax Error");

}

else if(error instanceof EvalError)

{

alert("Eval Error");

}

else if(error instanceof RangeError)

{

alert("Range Error");

}

else if(error instanceof ReferenceError)

{

alert("Reference Error");

}

else if(error instanceof TypeError)

{

alert("Type Error");

}

else if(error instanceof Error)

{

alert("Custon Error");

}

alert(error.message);

}

/script

注:瀏覽器不會拋出Error類型的exception異常,所以如果捕獲到Error類型的異常,可以確定這個異常是用戶代碼拋出的,不是瀏覽器拋出的。

Javascript的assert()

復制代碼 代碼如下:

function assert(bCondition, sErrorMsg) {

if (!bCondition) {

alert(sErrorMsg);

throw new Error(sErrorMsg);

}

}

javascript主要用于處理什么

簡單來說,你在瀏覽一個網(wǎng)頁的時候,例如在一個注冊頁面,你填寫了一些注冊信息后,點擊確定,然后突然彈個框出來,說你的某個信息填寫不符合要求,例如用戶名不能使用下劃線開始,密碼不能少于多少個字符等待,都可以用javascript來完成這個驗證,然后彈出警告信息。

概括來說,javascript就是用來做網(wǎng)頁上在客戶端執(zhí)行的一些操作。

以我的一點點經(jīng)驗,我覺得,學javascript并不需要一開始就很深入的學,大概了解一下javascript的情況,例如常用的函數(shù),方法等就可以了。深入的東西,在項目的過程仲就可以慢慢提高,當做一個網(wǎng)站的時候,需要用到某些功能,實現(xiàn)某些效果的時候,找一下資料,了解一下需要用到哪些東西,參考一下別人寫的腳本代碼,很快就熟悉了。當然,要精通,還是要花很大功夫的。

可以看一下一些大網(wǎng)站的代碼,javascript代碼都是可以看得到的。

javascript事件處理程序分為哪幾類?

Javascript事件處理程序的3種方式

產(chǎn)生了事件,我們就要去處理他,據(jù)馬海祥了解Javascript事件處理程序主要有3種方式:

1、HTML事件處理程序

即我們直接在HTML代碼中添加事件處理程序,如下面這段代碼:

input id="btn1" value="按鈕" type="button" onclick="showmsg();"

script

function showmsg(){

alert("HTML添加事件處理");

}

/script

從上面的代碼中我們可以看出,事件處理是直接嵌套在元素里頭的,這樣有一個毛?。壕褪莌tml代碼和js的耦合性太強,如果哪一天我想要改變js中showmsg,那么我不但要再js中修改,我還需要到html中修改,一兩處的修改我們能接受,但是當你的代碼達到萬行級別的時候,修改起來就需要勞民傷財了,所以,這個方式我們并不推薦使用。

2、DOM0級事件處理程序

即為指定對象添加事件處理,看下面的一段代碼

input id="btn2" value="按鈕" type="button"

script

var btn2= document.getElementById("btn2");

btn2.onclick=function(){

alert("DOM0級添加事件處理");

}

btn.onclick=null;//如果想要刪除btn2的點擊事件,將其置為null即可

/script

從上面的代碼中,我們能看出,相對于HTML事件處理程序,DOM0級事件,html代碼和js代碼的耦合性已經(jīng)大大降低。但是,聰明的程序員還是不太滿足,期望尋找更簡便的處理方式,下面馬海祥就來說說第三種處理方法。

3、DOM2級事件處理程序

DOM2也是對特定的對象添加事件處理程序(具體可查看馬海祥博客的《JavaScript對象屬性的基礎(chǔ)教程指南》相關(guān)介紹),但是主要涉及到兩個方法,用于處理指定和刪除事件處理程序的操作:addEventListener()和 removeEventListener()。

它們都接收三個參數(shù):要處理的事件名、作為事件處理程序的函數(shù)和一個布爾值(是否在捕獲階段處理事件),看下面的一段代碼:

input id="btn3" value="按鈕" type="button"

script

var btn3=document.getElementById("btn3");

btn3.addEventListener("click",showmsg,false);//這里我們把最后一個值置為false,即不在捕獲階段處理,一般來說冒泡處理在各瀏覽器中兼容性較好

function showmsg(){

alert("DOM2級添加事件處理程序");

}

btn3.removeEventListener("click",showmsg,false);//如果想要把這個事件刪除,只需要傳入同樣的參數(shù)即可

/script

請說明JavaScript中處理事件的步驟

事件處理程序的方式了:

1. 設(shè)置HTML標簽屬性為事件處理程序

文檔元素的事件處理程序?qū)傩?,其名字由“on”后面跟著事件名組成,例如:onclick、onmouseover。當然了,這種形式只能為DOM元素注冊事件處理程序。實例:

!DOCTYPE HTML

html

head

meta http-equiv="Content-Type" content="text/html; charset=utf-8"/

titletest/title

style type="text/css"

#div1{width: 300px; height: 300px; background: red; overflow:hidden;}

#div2{margin:50px auto; width: 200px; height: 200px; background: green; overflow:hidden;}

#div3{margin:50px auto; width: 100px; height: 100px; background: blue;}

/style

/head

body

div id="div1" onClick="console.log('div1');"div1

div id="div2" oNClick="console.log('div2');"div2

div id="div3" onclick="console.log('div3');" onclick="console.log('div3333');"div3

/div

/div

/div

script type="text/javascript"

/script

/body

/html

結(jié)果(鼠標點擊div3區(qū)域后):

從結(jié)果中可以看出:

①因為HTML里面不區(qū)分大小寫,所以這里事件處理程序?qū)傩悦髮?、小寫、大小混寫均可,屬性值就是相應事件處理程序的JavaScript代碼;

②若給同一元素寫多個onclick事件處理屬性,瀏覽器只執(zhí)行第一個onclick里面的代碼,后面的會被忽略;

③這種形式是在事件冒泡過程中注冊事件處理程序的;

2.設(shè)置JavaScript對象屬性為事件處理程序

可以通過設(shè)置某一事件目標的事件處理程序?qū)傩詠頌槠渥韵鄳氖录幚沓绦?。事件處理程序?qū)傩悦钟伞皁n”后面跟著事件名組成,例如:onclick、onmouseover。實例:

!DOCTYPE HTML

html

head

meta http-equiv="Content-Type" content="text/html; charset=utf-8"/

titletest/title

style type="text/css"

#div1{width: 300px; height: 300px; background: red; overflow:hidden;}

#div2{margin:50px auto; width: 200px; height: 200px; background: green; overflow:hidden;}

#div3{margin:50px auto; width: 100px; height: 100px; background: blue;}

/style

/head

body

div id="div1"div1

div id="div2"div2

div id="div3"div3

/div

/div

/div

script type="text/javascript"

var div1 = document.getElementById('div1');

var div2 = document.getElementById('div2');

var div3 = document.getElementById('div3');

div1.onclick = function(){

console.log('div1');

};

div2.onclick = function(){

console.log('div2');

};

div3.onclick = function(){

console.log('div3');

};

div1.onclick = function(){

console.log('div11111');

};

div1.onClick = function(){

console.log('DIV11111');

};

/script

/body

/html

結(jié)果(鼠標點擊div3區(qū)域后):

從結(jié)果中可以看出:

①因為JavaScript是嚴格區(qū)分大小寫的,所以,這種形式下屬性名只能按規(guī)定小寫;

②若給同一元素對象寫多個onclick事件處理屬性,后面寫的會覆蓋前面的(ps:這就是在修改一個對象屬性的值,屬性的值是唯一確定的);

③這種形式也是在事件冒泡過程中注冊事件處理程序的;

3.addEventListener()

前兩種方式出現(xiàn)在Web初期,眾多瀏覽器都有實現(xiàn)。而addEventListener()方法是標準事件模型中定義的。任何能成為事件目標的對象——這些對象包括Window對象、Document對象和所有文檔元素等——都定義了一個名叫addEventListener()的方法,使用這個方法可以為事件目標注冊事件處理程序。addEventListener()接受三個參數(shù):第一個參數(shù)是要注冊處理程序的事件類型,其值是字符串,但并不包括前綴“on”;第二個參數(shù)是指當指定類型的事件發(fā)生時應該調(diào)用的函數(shù);第三個參數(shù)是布爾值,其可以忽略(某些舊的瀏覽器上不能忽略這個參數(shù)),默認值為false。這種情況是在事件冒泡過程中注冊事件處理程序。當其為true時,就是在事件捕獲過程中注冊事件處理程序。實例:

!DOCTYPE HTML

html

head

meta http-equiv="Content-Type" content="text/html; charset=utf-8"/

titletest/title

style type="text/css"

#div1{width: 300px; height: 300px; background: red; overflow:hidden;}

#div2{margin:50px auto; width: 200px; height: 200px; background: green; overflow:hidden;}

#div3{margin:50px auto; width: 100px; height: 100px; background: blue;}

/style

/head

body

div id="div1"div1

div id="div2"div2

div id="div3"div3

/div

/div

/div

script type="text/javascript"

var div1 = document.getElementById('div1');

var div2 = document.getElementById('div2');

var div3 = document.getElementById('div3');

div1.addEventListener('click', function(){ console.log('div1-bubble'); }, false);

div2.addEventListener('click', function(){ console.log('div2-bubble'); }, false);

div3.addEventListener('click', function(){ console.log('div3-bubble'); }, false);

div3.addEventListener('click', function(){ console.log('div3-bubble222'); }, false);

div1.addEventListener('click', function(){ console.log('div1-capturing'); }, true);

div2.addEventListener('click', function(){ console.log('div2-capturing'); }, true);

div3.addEventListener('click', function(){ console.log('div3-capturing'); }, true);

/script

/body

/html

結(jié)果(鼠標點擊div3區(qū)域后):

從結(jié)果中可以看出:

①addEventListener()第三個參數(shù)的作用正如上面所說;

②通過addEventListener()方法給同一對象注冊多個同類型的事件,并不會發(fā)生忽略或覆蓋,而是會按順序依次執(zhí)行;

相對addEventListener()的是removeEventListener()方法,它同樣有三個參數(shù),前兩個參數(shù)自然跟addEventListener()的意義一樣,而第三個參數(shù)也只需跟相應的addEventListener()的第三個參數(shù)保持一致即可,同樣可以省略,默認值為false。它表示從對象中刪除某個事件處理函數(shù)。實例:

div1.addEventListener('click', div1BubbleFun, false);

div1.removeEventListener('click', div1BubbleFun, false);

function div1BubbleFun(){

console.log('div1-bubble');

}

4.attachEvent()

但是,IE8以及其之前版本的瀏覽器并不支持addEventListener()和removeEventListener()。相應的,IE定義了類似的方法attachEvent()和detachEvent()。因為IE8以及其之前版本瀏覽器也不支持事件捕獲,所以attachEvent()并不能注冊捕獲過程中的事件處理函數(shù),因此attachEvent()和detachEvent()要求只有兩個參數(shù):事件類型和事件處理函數(shù)。而且,它們的第一個參數(shù)使用了帶“on”前綴的事件處理程序?qū)傩悦?。實例?/p>

var div1 = document.getElementById('div1');

div1.attachEvent('onclick', div1BubbleFun);

function div1BubbleFun(){

console.log('div1-bubble');

}

相應的,從對象上刪除事件處理程序函數(shù)使用detachEvent()。例如:

div1.detachEvent('onclick', div1BubbleFun);

到此為止,我們已經(jīng)說了瀏覽器中事件傳播機制以及各種注冊事件處理程序的方法。下面我們就再說說事件處理程序調(diào)用時的一些問題吧!

二.事件處理程序的調(diào)用

1.事件處理程序的參數(shù):正如前面所說,通常事件對象作為參數(shù)傳遞給事件處理函數(shù),但IE8以及其之前版本的瀏覽器中全局變量event才是事件對象。所以,我們在寫相關(guān)代碼時應該注意兼容性問題。實例(給頁面上id為div1的元素添加點擊事件,當點擊該元素時在控制臺輸出事件類型和被點擊元素本身):

!DOCTYPE HTML

html

head

meta http-equiv="Content-Type" content="text/html; charset=utf-8"/

titletest/title

style type="text/css"

#div1{width: 300px; height: 300px; background: red; overflow: hidden;}

/style

/head

body

div id="div1"div1/div

script type="text/javascript"

var div1 = document.getElementById('div1');

if(div1.addEventListener){

div1.addEventListener('click', div1Fun, false);

}else if(div1.attachEvent){

div1.attachEvent('onclick', div1Fun);

}

function div1Fun(event){

event = event || window.event;

var target = event.target || event.srcElement;

console.log(event.type);

console.log(target);

}

/script

/body

/html

2.事件處理程序的運行環(huán)境:關(guān)于事件處理程序的運行環(huán)境,也就是在事件處理程序中調(diào)用上下文(this值)的指向問題,可以看下面四個實例。

實例一:

!DOCTYPE HTML

html

head

meta http-equiv="Content-Type" content="text/html; charset=utf-8"/

titletest/title

style type="text/css"

#div1{width: 300px; height: 300px; background: red; overflow: hidden;}

/style

/head

body

div id="div1" onclick="console.log('html:'); console.log(this);"div1/div

script type="text/javascript"

/script

/body

/html

結(jié)果一:

從結(jié)果可以看出:

①第一種方法事件處理程序中this指向這個元素本身;

實例二:

!DOCTYPE HTML

html

head

meta http-equiv="Content-Type" content="text/html; charset=utf-8"/

titletest/title

style type="text/css"

#div1{width: 300px; height: 300px; background: red; overflow: hidden;}

/style

/head

body

div id="div1" onclick="console.log('html:'); console.log(this);"div1/div

script type="text/javascript"

var div1 = document.getElementById('div1');

div1.onclick = function(){

console.log('div1.onclick:');

console.log(this);

};

/script

/body

/html

結(jié)果二:

從結(jié)果可以看出:

①第二種方法事件處理程序中this也指向這個元素本身;

②存在第二種方法時,它會覆蓋第一種方法注冊的事件處理程序;

實例三:

!DOCTYPE HTML

html

head

meta http-equiv="Content-Type" content="text/html; charset=utf-8"/

titletest/title

style type="text/css"

#div1{width: 300px; height: 300px; background: red; overflow: hidden;}

/style

/head

body

div id="div1" onclick="console.log('html:'); console.log(this);"div1/div

script type="text/javascript"

var div1 = document.getElementById('div1');

div1.onclick = function(){

console.log('div1.onclick:');

console.log(this);

};

div1.addEventListener('click', function(){

console.log('div1.addEventListener:');

console.log(this);

}, false);

/script

/body

/html

結(jié)果三:

從結(jié)果可以看出:

①第三種方法事件處理程序中this也指向這個元素本身;

②第三種方法并不會覆蓋第一種或第二種方法注冊的事件處理程序;

實例四:

!DOCTYPE HTML

html

head

meta http-equiv="Content-Type" content="text/html; charset=utf-8"/

titletest/title

style type="text/css"

#div1{width: 300px; height: 300px; background: red; overflow: hidden;}

/style

/head

body

div id="div1" onclick="console.log('html:'); console.log(this);"div1/div

script type="text/javascript"

var div1 = document.getElementById('div1');

div1.onclick = function(){

console.log('div1.onclick:');

console.log(this);

};

div1.attachEvent('onclick', function(){

console.log('div1.attachEvent:');

console.log(this === window);

});

/script

/body

/html

結(jié)果四:

從結(jié)果可以看出:

①第四種方法事件處理程序中this指向全局對象Window;

②第四種方法也不會覆蓋第一種或第二種方法注冊的事件處理程序;

3.事件處理程序的調(diào)用順序:多個事件處理程序調(diào)用規(guī)則如下:

①通過HTML屬性注冊的處理程序和通過設(shè)置對象屬性的處理程序一直優(yōu)先調(diào)用;

②使用addEventListener()注冊的處理程序按照它們的注冊順序依次調(diào)用;

③使用attachEvent()注冊的處理程序可能按照任何順序調(diào)用,所以代碼不應該依賴于調(diào)用順序;

JavaScript的事件處理方法?

您好,你的問題,我之前好像也遇到過,以下是我原來的解決思路和方法,希望能幫助到你,若有錯誤,還望見諒!第一種方式存在瀏覽器兼容性問題,有些瀏覽器會默認把事件對象作為第一個參數(shù)傳遞到函數(shù),有些則不會,遇到這種情況,只要直接獲取event對象即可(下面是兼容所有瀏覽器的代碼):

function handler(e){

var e=e||event;

console.log(e);

}非常感謝您的耐心觀看,如有幫助請采納,祝生活愉快!謝謝!


本文標題:javascript處理,javascript處理數(shù)據(jù)
鏈接地址:http://weahome.cn/article/dscjsjp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部