JavaScript的事件及異常捕獲
事件處理
【onClick】單擊事件、【onMouseOver】滑鼠經過事件、【onMouseOut】滑鼠移出事件、【onChange】文字內容改變事件、【onSelect】文字被框選事件、【onFoucus】得到游標事件、【onBlur】游標失去事件、【onLoad】網頁載入事件(在body標籤中新增)、【onUnload】網頁關閉事件(在body標籤中新增或者使用window.onload=function(){})
事件註冊及監聽
1、DOM0 級事件處理
在標籤中新增onClick或其他事件的屬性並賦值為JS的自定義方法名
onClick="dongfun(20)"
兩種方法在事件中得到事件的標籤物件:
1 <div id="divid" onMouseOver="overbut(this)" onMouseOut="outbut()">東小東</div> 2 <script> 3//通過引數傳遞物件 4function overbut(obj){ 5obj.innerHTML="事件觸發發,滑鼠在我的範圍"; 6} 7//通過ID查詢到物件 8function outbut(){ 9document.getElementById("divid").innerHTML="再見見"; 10} 11 </script>
內容改變監聽:
方法一
<input onChange="this.style.backgroundColor='red'">
方法二
1 <input id="inid" onChange="inputbut(this)"> 2 <script> 3function inputbut(obj){ 4obj.style.backgroundColor="green";//更改樣式 5} 6 </script>
2、DOM1 級事件處理
通過標籤或者ID尋找到物件,進行事件監聽,一個事件只能對應一個事件處理函式,在HTML中不用進行註冊
1 function dongfunx(){ 2alert("東小東彈框"); 3} 4 //找到物件 5 var h1objx=document.getElementsByTagName("h1")[0]; 6 //註冊事件 7 h1objx.onclick=dongfunx; 8 //清除事件 9 h1objx.onclick=null;
3、DOM2 級事件處理
通過標籤或者ID尋找到物件,進行事件監聽,一個事件只能對應多個事件處理函式,在HTML中不用進行註冊
1 //通過ID找到標籤物件 2 divobjx=document.getElementById("divid"); 3 4 //新增監聽事件,可以新增多個相同或者不同的事件 5 //引數(事件名,處理函式名),其中事件名是普通事件中去掉“on”字首 6 divobjx.addEventListener("click",onck1); 7 divobjx.addEventListener("click",onck2); 8 9 //事件處理函式 10 function onck1(){ 11alert("----- onck1 -----"); 12} 13 function onck2(){ 14alert("----- onck2 -----"); 15 } 16 17 //移除點選事件 18 divobjx.removeEventListener("click",onck1);
匿名方法實現
1 divobjx=document.getElementById("divid"); 2 divobjx.addEventListener("click",function(){ 3//執行操作內容 4alert("----------"); 5 });
補充:
阻止HTML的預設事件
1 <a href="https://www.cnblogs.com/dongxiaodong/">跳轉</a> 2 <script> 3function dongfunx(eventx){ 4eventx.preventDefault();//阻止預設事件,不進行跳轉 5} 6//找到物件 7var aobjx=document.getElementsByTagName("a")[0]; 8//註冊事件 9aobjx.onclick=dongfunx; 10 </script>
頁面載入完畢監聽:
1 window.onload=function(){ 2alert("頁面載入完畢"); 3 }
異常捕獲
如果程式執行時遇到異常且未進行異常捕獲,則程式將終止執行,如果有異常捕獲,則可以繼續執行異常以下的程式碼。
捕獲所有異常:
1 try{ 2//alert(jj);//未定義變數異常 3throw("東小東異常");//手動丟擲異常,引數為異常內容 4 }catch(e){ 5alert("捕獲的錯誤:"+e); 6}