1. 程式人生 > >js中 關於DOM的事件操作

js中 關於DOM的事件操作

html pin func poi 上彈 事情 javascrip 對象模型 cti

一、JavaScript的組成

JavaScript基礎分為三個部分:

  • ECMAScript:JavaScript的語法標準。包括變量、表達式、運算符、函數、if語句、for語句等。

  • DOM:文檔對象模型,操作網頁上的元素的API。比如讓盒子移動、變色、輪播圖等。

  • BOM:瀏覽器對象模型,操作瀏覽器部分功能的API。比如讓瀏覽器自動滾動。

二、事件

JS是以事件驅動為核心的一門語言。

事件的三要素

事件的三要素:事件源、事件、事件驅動程序

比如,我用手去按開關,燈亮了。這件事情裏,事件源是:手。事件是:按開關。事件驅動程序是:燈的開和關。

再比如,網頁上彈出一個廣告,我點擊右上角的X

,廣告就關閉了。這件事情裏,事件源是:X。事件是:onclick。事件驅動程序是:廣告關閉了。

於是可以總結出:誰引發的後續事件,誰就是事件源。

總結如下:

  • 事件源:引發後續事件的html標簽。

  • 事件:js已經定義好了(見下圖)。

  • 事件驅動程序:對樣式和html的操作。也就是DOM。

代碼書寫步驟如下:(重要)

  • (1)獲取事件源:document.getElementById(“box”); //類似與ios語言的 UIButton *adBtn = [UIButton buttonWithType:UIButtonTypeCustom];

  • (2)綁定事件: 事件源box.事件onclick = function(){ 事件驅動程序 };

  • (3)書寫事件驅動程序:關於DOM的操作

代碼舉例:

<body>
<div id="box1"></div>

<script type="text/javascript">
    // 1、獲取事件源
    var div = document.getElementById("box1");
    // 2、綁定事件
    div.onclick = function () {
        // 3、書寫事件驅動程序
        alert("我是彈出的內容");
    }
</script>

</body>

常見事件如下:

技術分享圖片

下面針對這事件的三要素,進行分別介紹。

1、獲取事件源的方式(DOM節點的獲取)

獲取事件源的常見方式如下:

var div1 = document.getElementById("box1");      //方式一:通過id獲取單個標簽
 
var arr1 = document.getElementsByTagName("div1");     //方式二:通過 標簽名 獲得 標簽數組,所以有s
 
var arr2 = document.getElementsByClassName("hehe");  //方式三:通過 類名 獲得 標簽數組,所以有s

2、綁定事件的方式

方式一:直接綁定匿名函數

<div id="box1" ></div>

<script type="text/javascript">
    var div1 = document.getElementById("box1");
    //綁定事件的第一種方式
    div1.onclick = function () {
        alert("我是彈出的內容");
    }
</script>

方式二:先單獨定義函數,再綁定

 <div id="box1" ></div>

<script type="text/javascript">
    var div1 = document.getElementById("box1");
    //綁定事件的第二種方式
    div1.onclick = fn;   //註意,這裏是fn,不是fn()。fn()指的是返回值。
    //單獨定義函數
    function fn() {
        alert("我是彈出的內容");
    }
</script>

註意上方代碼的註釋。綁定的時候,是寫fn,不是寫fn()。fn代表的是整個函數,而fn()代表的是返回值。

方式三:行內綁定

<!--行內綁定-->
<div id="box1" onclick="fn()"></div>

<script type="text/javascript">

    function fn() {
        alert("我是彈出的內容");
    }

</script>

註意第一行代碼,綁定時,是寫的"fn()",不是寫的"fn"。因為綁定的這段代碼不是寫在js代碼裏的,而是被識別成了字符串

3、事件驅動程序

我們在上面是拿alert舉例,不僅如此,我們還可以操作標簽的屬性和樣式。舉例如下:

<style>
        #box {
            width: 100px;
            height: 100px;
            background-color: pink;
            cursor: pointer;
        }
    </style>
</head>

<body>

<div id="box" ></div>

<script type="text/javascript">
    var oDiv = document.getElementById("box");
    //點擊鼠標時,原本粉色的div變大了,背景變紅了
    oDiv.onclick = function () {
        oDiv.style.width = "200px";   //屬性值要寫引號
        oDiv.style.height = "200px";
        oDiv.style.backgroundColor = "red";   //屬性名是backgroundColor,不是background-Color
    }
</script>

上方代碼的註意事項:

  • 在js裏寫屬性值時,要用引號
  • 在js裏寫屬性名時,是backgroundColor,不是CSS裏面的background-Color。記得所有的像css屬性的text-*,line-*、backgroun-*等在js中都寫成駝峰

onload事件

當頁面加載(文本和圖片)完畢的時候,觸發onload事件。

舉例:

<script type="text/javascript">
    window.onload = function () {
        console.log("小馬哥");  //等頁面加載完畢時,打印字符串
    }
</script>

有一點我們要知道:js的加載是和html同步加載的。因此,如果使用元素在定義元素之前,容易報錯。這個時候,onload事件就能派上用場了,我們可以把使用元素的代碼放在onload裏,就能保證這段代碼是最後執行。

建議是:整個頁面上所有元素加載完畢在執行js內容。所以,window.onload可以預防使用標簽在定義標簽之前。

js中 關於DOM的事件操作