<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
【獲取事件物件】
元素.addEventListener('click',function(e){})
【事件物件常用屬性】
【案例】:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> img { position: absolute; top: 0; left: 0; } </style> </head> <body> <img src="./images/tianshi.gif" alt=""> <script> let img = document.querySelector('img') document.addEventListener('mousemove', function (e) { img.style.top = e.pageY-40 + 'px' img.style.left = e.pageX-50 + 'px' }) </script> </body> </html>
【解釋】: 事件流是指事件完整執行過程中的流動路徑
【圖解】:
【說明】:
【什麼是事件冒泡】 :當一個元素的事件被觸發時,同樣的事件將會在該元素的所有祖先元素中依次被觸發。
事件冒泡是預設存在的。
【案例解釋】
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .father { margin: 100px auto; width: 500px; height: 500px; background-color: pink; } .son { width: 200px; height: 200px; background-color: purple; } </style> </head> <body> <div class="father"> <div class="son"></div> </div> <script> let fa = document.querySelector('.father') let son = document.querySelector('.son') fa.addEventListener('click', function () { alert('我是爸爸') }, true) son.addEventListener('click', function () { alert('我是兒子') }, true) document.addEventListener('click', function () { alert('我是爺爺') }, true) // btn.onclick = function() {} </script> </body> </html>
【事件捕獲概念】: 從DOM的根元素開始去執行對應的事件。
【語法】
DOM.addEventListener(事件型別,事件處理常式,是否使用捕獲機制)
【說明】
【阻止事件的流動】
語法:
事件物件.stopProPagation()
說明:
【阻止事件的預設行為】
語法:
e.preventDefault()
【解釋】: 將事件委託於其他元素進行處理。
【優點】: 給父級元素新增事件可以極大的優化效能
【原理】: 利用事件冒泡的特點,給父級元素新增事件,子元素可以觸發
【語法】: 事件物件.target可以獲取得到真正觸發事件的元素
**【需求】:**點選錄入按鈕,可以增加學生資訊
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <link rel="stylesheet" href="css/user.css"> </head> <body> <h1>新增學員</h1> <div class="info"> 姓名:<input type="text" class="uname"> 年齡:<input type="text" class="age"> 性別: <select name="gender" id="" class="gender"> <option value="男">男</option> <option value="女">女</option> </select> 薪資:<input type="text" class="salary"> 就業城市:<select name="city" id="" class="city"> <option value="北京">北京</option> <option value="上海">上海</option> <option value="廣州">廣州</option> <option value="深圳">深圳</option> <option value="曹縣">曹縣</option> </select> <button class="add">錄入</button> </div> <h1>就業榜</h1> <table> <thead> <tr> <th>學號</th> <th>姓名</th> <th>年齡</th> <th>性別</th> <th>薪資</th> <th>就業城市</th> <th>操作</th> </tr> </thead> <tbody> </tbody> </table> <script> //準備好資料後端的資料 let arr = [ { stuId: 1001, uname: '歐陽霸天', age: 19, gender: '男', salary: '20000', city: '上海' }, { stuId: 1002, uname: '令狐霸天', age: 29, gender: '男', salary: '30000', city: '北京' }, { stuId: 1003, uname: '諸葛霸天', age: 39, gender: '男', salary: '2000', city: '北京' }, ] // 獲取元素 let tbody = document.querySelector('tbody'); // 獲取錄入按鈕 let add = document.querySelector('.add'); // 獲取表單元素 let uname = document.querySelector('.uname') let age = document.querySelector('.age') let gender = document.querySelector('.gender') let salary = document.querySelector('.salary') let city = document.querySelector('.city') // 封裝渲染資料的函數 function render() { // 清空原來的資料 tbody.innerHTML = '' for (let i = 0; i < arr.length; i++) { // 建立tr let tr = document.createElement('tr'); // 新增資料 tr.innerHTML = ` <td>${arr[i].stuId}</td> <td>${arr[i].uname}</td> <td>${arr[i].age}</td> <td>${arr[i].gender}</td> <td>${arr[i].salary}</td> <td>${arr[i].city}</td> <td> <a href="javascript:" id=${i}>刪除</a> </td> ` tbody.appendChild(tr) // 復原表單資料 uname.value = age.value = salary.value = '' } } // 呼叫頁面載入函數 render(); // 新增資料操作 add.addEventListener('click', function () { // 獲取表單的資料 新增到陣列 arr.push({ stuId: arr[arr.length - 1].stuId + 1, uname: uname.value, age: age.value, gender: gender.value, salary: salary.value, city: city.value }) render(); }) // 刪除操作 tbody.addEventListener('click', function (e) { if (e.target.tagName === 'A') { arr.splice(e.target.id, 1) render() } }) </script> </body> </html>
本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注it145.com的更多內容!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45