JavaScript DOM編程(2)HTML事件

HTML DOM 使 <code>JavaScript</code> 有能力對 HTML 事件做出反應(yīng)深啤。如下的代碼:

<h1 onclick="this.innerHTML='變成神!'">點(diǎn)擊文本!</h1>

點(diǎn)擊文本错维,文字會變成“變成神壁榕!”

對事件做出反應(yīng)

我們可以在事件發(fā)生時執(zhí)行 <code>JavaScript</code>皇耗,比如當(dāng)用戶在 HTML 元素上點(diǎn)擊時。
如需在用戶點(diǎn)擊某個元素時執(zhí)行代碼赞哗,請向一個 HTML 事件屬性添加 <code>JavaScript</code> 代碼:

 onclick='JavaScript';

HTML 事件的例子:

  • 當(dāng)用戶點(diǎn)擊鼠標(biāo)時 <code>onmousedown雷则、onmouseup 以及 onclick</code> 事件
    <code>onmousedown, onmouseup</code> 以及 onclick 構(gòu)成了鼠標(biāo)點(diǎn)擊事件的所有部分。首先當(dāng)點(diǎn)擊鼠標(biāo)按鈕時肪笋,會觸發(fā) onmousedown 事件月劈,當(dāng)釋放鼠標(biāo)按鈕時度迂,會觸發(fā) onmouseup 事件,最后猜揪,當(dāng)完成鼠標(biāo)點(diǎn)擊時惭墓,會觸發(fā) onclick 事件。
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <script>
    function on(){alert(1);}
    function down(){alert(2);}
    function up(){alert(3);}
    </script>
    </head>
    <body>
    <p onmouseup="up()" >dianji</p>
    <p onmousedown="down()">dianji</p>
    <p onclick="on()">dianji</p>
    </body>
    </html>
  • 當(dāng)網(wǎng)頁或圖像已加載時 <code>onload</code> 與關(guān)閉頁面時 <code>onunload</code>事件
    <body onload="alert(1);" onunload="alert(2);"></body>
  • 當(dāng)鼠標(biāo)移動或移除到元素上時 onmouseover 和 onmouseout 事件
    <p onmouseover="this.innerHTML='鼠標(biāo)移上來了'" onmouseout="this.innerHTML='鼠標(biāo)移走了'"></p>
  • 當(dāng)輸入字段被改變時 onchange事件
    <input type="text" onchange="this.value='變了變了' " />
  • 當(dāng)提交 HTML 表單時以及各種input事件
    onfocus獲取輸入焦點(diǎn)時觸發(fā)的事件而姐,<code>select()</code>輸入框內(nèi)容的選中
    <input type="text" onfocus="this.value='獲取了焦點(diǎn)' " />
    <input type="text" onfocus="select(this.value);" />
  • 當(dāng)用戶觸發(fā)按鍵時诅妹,不具體展開有興趣自行百度

addEventListener() 方法

  1. 在用戶點(diǎn)擊按鈕時觸發(fā)監(jiān)聽事件:
    <code>document.getElementById("myBtn").addEventListener("click", displayDate);</code>
    由于沒有找到太好的例子,所以我簡單介紹下用法毅人,實際使用情況再自行分析。
    主要用于監(jiān)聽點(diǎn)擊事件尖殃,而且可以并發(fā)事件丈莺。
    <code>ddEventListener()</code> 方法添加的事件句柄不會覆蓋已存在的事件。
    你可以向一個元素添加多個事件送丰。
    你可以向同個元素添加多個同類型的事件句柄缔俄,如:兩個 "click" 事件。
    你可以向任何 DOM 對象添加事件監(jiān)聽器躏,不僅僅是 HTML 元素俐载。如: window 對象。
    <code>addEventListener()</code> 方法可以更簡單的控制事件(冒泡與捕獲)登失。
    當(dāng)你使用 <code>addEventListener()</code> 方法時, <code>JavaScript</code> 從 HTML 標(biāo)記中分離開來遏佣,可讀性更強(qiáng), 在沒有控制HTML標(biāo)記時也可以添加事件監(jiān)聽揽浙。
    你可以使用 <code>removeEventListener()</code> 方法來移除事件的監(jiān)聽状婶。
    不能寫onclick,只能用<code>click</code>馅巷。
    語法

    element.addEventListener(event, function, useCapture);
    

第一個參數(shù)是事件的類型 (如 "click" 或 "mousedown").
第二個參數(shù)是事件觸發(fā)后調(diào)用的函數(shù)膛虫。
第三個參數(shù)是個布爾值用于描述事件是冒泡還是捕獲。該參數(shù)是可選的钓猬。
栗子
當(dāng)用戶點(diǎn)擊元素時彈出 "Hello World!" :

      element.addEventListener("click", function(){ alert("Hello World!"); });

也可以獲取id來添加:

    document.getElementById("myBtn").addEventListener("click", myFunction);
    function myFunction() {
        alert ("Hello World!");
    }

也可以添加多個稍刀,或者不同類型都可以:

    document.getElementById("myBtn").addEventListener("mouseout", myFunction);
    document.getElementById("myBtn").addEventListener("click", myFunction);
    document.getElementById("myBtn").addEventListener("click", myFunction);
  1. 向 Window 對象添加事件句柄
    addEventListener() 方法允許你在 HTML DOM 對象添加事件監(jiān)聽, HTML DOM 對象如: HTML 元素, HTML 文檔, window 對象敞曹≌嗽拢或者其他支出的事件對象如: xmlHttpRequest 對象。
    實例
    當(dāng)用戶重置窗口大小時添加事件監(jiān)聽:
    window.addEventListener("resize", function(){ document.getElementById("demo").innerHTML = sometext;});

  2. 傳遞參數(shù)
    當(dāng)傳遞參數(shù)值時异雁,使用"匿名函數(shù)"調(diào)用帶參數(shù)的函數(shù):
    實例
    element.addEventListener("click", function(){ myFunction(p1, p2); });

  3. 事件冒泡或事件捕獲
    事件傳遞有兩種方式:冒泡與捕獲捶障。
    事件傳遞定義了元素事件觸發(fā)的順序鸠珠。 如果你將 <p> 元素插入到 <code><div></code> 元素中鬼吵,用戶點(diǎn)擊 <code><p></code> 元素, 哪個元素的 <code>"click"</code> 事件先被觸發(fā)呢?
    在 *冒泡 *中李剖,內(nèi)部元素的事件會先被觸發(fā),然后再觸發(fā)外部元素锭部,即: <code><p></code> 元素的點(diǎn)擊事件先觸發(fā)暂论,然后會觸發(fā) <code><div></code> 元素的點(diǎn)擊事件。
    在 *捕獲 *中拌禾,外部元素的事件會先被觸發(fā)取胎,然后才會觸發(fā)內(nèi)部元素的事件,即: <code><div></code> 元素的點(diǎn)擊事件先觸發(fā) 湃窍,然后再觸發(fā) <code><p></code> 元素的點(diǎn)擊事件闻蛀。
    <code>addEventListener()</code> 方法可以指定 <code>"useCapture"</code> 參數(shù)來設(shè)置傳遞類型:
    addEventListener(event, function, useCapture);
    默認(rèn)值為<code> false</code>, 即冒泡傳遞,當(dāng)值為 <code>true</code> 時, 事件使用捕獲傳遞您市。
    實例
    document.getElementById("myDiv").addEventListener("click", myFunction, true);
    <code>removeEventListener()</code> 方法
    <code>removeEventListener()</code> 方法移除由 <code>addEventListener()</code> 方法添加的事件句柄:
    實例
    element.removeEventListener("mousemove", myFunction);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末觉痛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子茵休,更是在濱河造成了極大的恐慌薪棒,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件榕莺,死亡現(xiàn)場離奇詭異俐芯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)钉鸯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進(jìn)店門吧史,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人唠雕,你說我怎么就攤上這事扣蜻。” “怎么了及塘?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵莽使,是天一觀的道長。 經(jīng)常有香客問我笙僚,道長芳肌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任肋层,我火速辦了婚禮亿笤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘栋猖。我一直安慰自己净薛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布蒲拉。 她就那樣靜靜地躺著肃拜,像睡著了一般痴腌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上燃领,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天士聪,我揣著相機(jī)與錄音,去河邊找鬼猛蔽。 笑死剥悟,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的曼库。 我是一名探鬼主播区岗,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼毁枯!你這毒婦竟也來了躏尉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤后众,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后颅拦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蒂誉,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年距帅,在試婚紗的時候發(fā)現(xiàn)自己被綠了右锨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡碌秸,死狀恐怖绍移,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情讥电,我是刑警寧澤蹂窖,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站恩敌,受9級特大地震影響瞬测,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纠炮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一月趟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧恢口,春花似錦孝宗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽问潭。三九已至,卻和暖如春沙峻,著一層夾襖步出監(jiān)牢的瞬間睦授,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工摔寨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留去枷,地道東北人。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓是复,卻偏偏與公主長得像删顶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子淑廊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內(nèi)容

  • JavaScript HTML DOM 通過HTML DOM,可以訪問JavaScript HTML文檔的所有元素...
    edwin_hei閱讀 437評論 0 2
  • DOM簡介 當(dāng)網(wǎng)頁加載時逗余,瀏覽器會創(chuàng)建頁面的文檔對象模型(DOM)。通過DOM季惩,JS可以對HTML實現(xiàn)以下操作:改...
    figure_ai閱讀 518評論 0 1
  • 問答 一画拾、dom對象的innerText和innerHTML有什么區(qū)別啥繁? innerTextinnerText是一...
    婷樓沐熙閱讀 404評論 0 0
  • 事件綁定的方式 給 DOM 元素綁定事件分為兩大類:在 html 中直接綁定 和 在 JavaScript 中綁定...
    Bruce_zhuan閱讀 1,036評論 0 6
  • 依稀記得, 那年七月的一天青抛, 我們也趕赴沙場旗闽。 為了當(dāng)時向往的美好, 興奮蜜另,緊張适室,憧憬,又或許失落举瑰! 時光穿梭靜靜...
    松石靜水閱讀 194評論 0 1