javascript - 這個事件代碼怎么理解?
問題描述
<input type='text' placeholder='輸入要添加的文本' /> <button id='btn'>加 </button> <ul id='ul'><li>11111</li><li>22</li><li>3333</li><li>4444</li> </ul> <script type='text/javascript'>var ul = document.getElementById('ul');var lis = ul.getElementsByTagName(’li’);var btn = document.getElementById('btn');btn.onclick = function() { //動態添加li var txt = document.getElementById('txt'),txtValue = txt.value,ali = document.createElement('li');console.log(txt.value); ali.innerHTML = txtValue;ul.appendChild(ali);}ul.onmouseover = function(ev) { var ev = ev || window.event; //獲取發生事件 event 兼容 =====1 var target = ev.target || ev.srcElement; //獲取真正被觸發的元素 =====2 if (target.nodeName.toLocaleLowerCase() == ’li’) {//判斷target是否是所需要的元素 正是因為這個判斷 我們可以得到任何想要的元素 a li td 等等target.style.background = 'red'; }}ul.onmouseout = function(ev) { var ev = ev || window.event; var target = ev.target || ev.srcElement; if (target.nodeName.toLocaleLowerCase() == ’li’) {target.style.background = ''; }} </script>
標注的1和2兩處的代碼的寫法怎么理解?看不懂= =哪來的api
問題解答
回答1:ev是事件的參數,在ev中包含了事件觸發時的參數,比如click事件的ev中包含ev.pageX,ev.pageY,keydown事件中包ev.keyCode等,在ie中,ev是全局的可以通過window.event來獲取,在其他瀏覽器中都是作為參數傳入的。
回答2:function 中ev是event的縮寫,即事件。而事件的接口屬于瀏覽器端實現。
簡單來說:window/event屬于全局變量,只要在瀏覽器中執行,默認存在此變量。
回答3:主要是處理瀏覽器兼容性比如2舊的ie瀏覽器,或者事件對應的元素需要用 ev.srcElement,而現在瀏覽器只需要使用 ev.target 就可以了
回答4:1和2都是為了兼容IE事件的寫法。
相關文章:
1. [前端求職必看]前端開發面試題與答案精選_擴展問題2. javascript - 在top.jsp點擊退出按鈕后,right.jsp進行頁面跳轉,跳轉到login.jsp3. javascript - 下面的這段算法代碼求解釋4. mac連接阿里云docker集群,已經卡了2天了,求問?5. css3 - 在sublime text里, 如何讓emmet生成的帶前綴css屬性垂直對齊?6. javascript - js 有什么優雅的辦法實現在同時打開的兩個標簽頁間相互通信?7. java - spring-data Jpa 不需要執行save 語句,Set字段就可以自動執行保存的方法?求解8. android - 哪位大神知道java后臺的api接口的對象傳到前端后輸入日期報錯,是什么情況?求大神指點9. javascript - angular中如何創建一個能被不同模塊中組件都能訪問其屬性和方法的對象10. 想找個php大神仿個網站。
