BOM、DOM與JS的事件

大家讲道理
發布: 2018-05-17 15:58:24
原創
3006 人瀏覽過

上回書說道,JS變數運算子分支結構循環和巢狀循環等內容。本回就由本K給大夥嘮嘮JS中的BOM#、DOM

一、「花心大蘿蔔」-BOM

##1 、震驚,FFF團為何對BOM舉起了火把-BOM簡介

#    BOM(Browser Object# Model) 是指瀏覽器物件模型,在JS中BOM是個不折不扣的花心大蘿蔔,因為它有很多個對象,其中代表瀏覽器窗口的Window物件是BOM的「正室」、也就是最重要的,其他物件都是正室的下手、或叫側室也不足為過。

2、那些細數BOM的風流-BOM物件詳解

2.1 BOM的正室- window對象。

window對象代表瀏覽器窗口,是JS的BOM中最常用到的對象,下面就跟大家介紹一下領悟window對象的常用方法。

① prompt:彈出視窗接受使用者輸入;
#② alert:彈跳視窗警告;
③ confirm:帶有確認/取消按鈕的提示框;
④ close:關閉瀏覽器視窗;
⑤ open:重新開啟新窗口,傳入參數URL/視窗名稱/視窗特徵;
set#Timeout:設定延遲執行,只會執行一次(兩個參數:需要執行的function/毫秒數);
⑦ setInterval:設定計時器,循環每隔N毫秒執行一次(傳入參數:呼叫setInterval時回傳一個ID,透過變數接受ID,傳入clearInterval);
⑧ clearTimeout:清除延遲;##⑨ clearInterval:清除計時器;

    在這九種方法中,最常用到也是這裡面最麻煩的四種是setTimeout/clearTimeout和setInterval/clearInterval,它們兩兩對應,常放在一起搭配使用。下面就給大夥舉一個這方面的栗子~

(栗子:setTimeout/clearTimeout)



    
        
        首先是setTimeout与clearTimeout
                
        
    
                  

(栗子:setInterval/clearInterval)

然后是setInterval与clearInterval

登入後複製

2.2 BOM的側室們-其他物件簡述。

因為window物件以外的其他BOM物件在實際的JS撰寫中很少出現,所以本K就以程式碼的形式給大家簡單提一下。

    BOM的侧室们   





登入後複製

二、“N世同堂”——DOM

1、朝阳群众又立功,代码中竟出现如此神秘的“庞大组织”——DOM简介

DOM(DocumentObject Model),是指文档对象模型,是W3C组织推荐的处理可扩展标志语言的标准编程接口。在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象的标准模型,而DOM中的每一条分支都被称作一个“节点”,所有节点及节点属性构成的结构图会呈现出很强的层次性(栗子如下图,源于万能的度娘)。

DOM节点分为三大类:元素节点,文本节点,属性节点。文本节点、属性节点为元素节点的两个子节点,通过gelElement系列方法,可以取到元素节点。

2、如此组织,其真相竟然是...——DOM操作详解

DOM操作是JS中应用性非常强的一部分,所以本K就以代码的形式来给大家叙述。

2.1 获取节点与样式修改

    DOM代码详述(一)   

这里是测试区

这里是测试区

这里是测试区







登入後複製

2.2 层次节点常用操作

       
  • 第一项
  • 第二项
  • 第三项
  • 第四项
  • 第1项
  • 第2项
  • 第3项
  • 第4项

登入後複製

2.3表格操作

    DOM操作表格   
书名 价格
看得见风景的房间 30.00元
幸福从天而降 18.50元
60个瞬间 32.00元
合计

登入後複製

三、鼠标和键盘、那些不得不说的事——JS中的事件

1、三足鼎立——JS中的事件分类

1.1 鼠标事件

click 单击

dblclick 双击

mouseover 鼠标移入

mouseout 鼠标移出

mousemove 鼠标划过

mousedown 鼠标按下

mouseup 鼠标抬起

1.2 键盘事件

keydown:键盘按下时触发

keypress:键盘按下并松开的瞬间触发

keyup:键盘抬起时触发

注意事項
①執行順序:keydown keypress keyup
②長按時,會循環不斷的執行keydown keypress
③有keydown事件,不一定有keyup事件(事件觸發過程中,滑鼠移走,可能沒有keyup)
④keypress事件只能捕獲字母、數字、符號(包括回車和空格),不能捕獲功能鍵;keydown keyup基本上可以捕獲所有功能鍵,特殊例外
⑤keypress區分大小寫,keydown keyup不區分;
⑥keypress不區分主鍵盤和小鍵盤,keydown keyup區分;
【如何確定鍵盤觸發按鍵】
#⑴ 在觸發函數中觸發參數e代表按鍵事件;
⑵ 透過e.keyCode 確認案件Ascii碼值,進而決定按鍵;
⑶ 相容所有瀏覽器的寫法(一般不必要):
var evn = e||event; //取按鍵
## var code = evn .keyCode||evn.which||evn.charCode; //取到按鍵編碼

##1.3 HTML事件




#2、此岸與彼岸-JS中的事件模型
2.1 DOM0事件模型

2.1. 1 內嵌模型:直接將函數名稱作為HTML標籤
的某個事件屬性的屬性值;
栗子

登入後複製

3、上上下下——JS中的事件流

3.1 事件冒泡

当某DOM元素触发某事件时,会从当前DOM元素开始,逐个触发其祖先元素的同类型事件,直到DOM根节点;
DOM0事件流均为事件冒泡;
IE中使用.attachEvent()事件,均为冒泡;
其他浏览器.addEventListener()添加的事件,当第三个参数为false时,为冒泡。

3.2 事件捕获

当某DOM元素触发某事件时,会从DOM根节点,逐个触发其祖先元素的同类型事件,直到触发到当前DOM元素开始;

只有使用.addEventListener()添加的事件,并且当第三个参数为true时,才进行捕获。

3.3 阻止事件冒泡

IE浏览器:将e.cancelBubble属性设为true;
其他浏览器:调用e.stopPropagation();方法

3.4 取消事件默认行为

IE浏览器:将e.returnValue属性设为false;
其他浏览器:调用e.preventDefault(); 方法

(这里有栗子)

    事件流举栗  

3

2

1

跳转页面
登入後複製

以上是BOM、DOM與JS的事件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!