javascript - 這個(gè)事件代碼怎么理解?
問(wèn)題描述
<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() { //動(dòng)態(tài)添加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; //獲取發(fā)生事件 event 兼容 =====1 var target = ev.target || ev.srcElement; //獲取真正被觸發(fā)的元素 =====2 if (target.nodeName.toLocaleLowerCase() == ’li’) {//判斷target是否是所需要的元素 正是因?yàn)檫@個(gè)判斷 我們可以得到任何想要的元素 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>
標(biāo)注的1和2兩處的代碼的寫(xiě)法怎么理解?看不懂= =哪來(lái)的api
問(wèn)題解答
回答1:ev是事件的參數(shù),在ev中包含了事件觸發(fā)時(shí)的參數(shù),比如click事件的ev中包含ev.pageX,ev.pageY,keydown事件中包ev.keyCode等,在ie中,ev是全局的可以通過(guò)window.event來(lái)獲取,在其他瀏覽器中都是作為參數(shù)傳入的。
回答2:function 中ev是event的縮寫(xiě),即事件。而事件的接口屬于瀏覽器端實(shí)現(xiàn)。
簡(jiǎn)單來(lái)說(shuō):window/event屬于全局變量,只要在瀏覽器中執(zhí)行,默認(rèn)存在此變量。
回答3:主要是處理瀏覽器兼容性比如2舊的ie瀏覽器,或者事件對(duì)應(yīng)的元素需要用 ev.srcElement,而現(xiàn)在瀏覽器只需要使用 ev.target 就可以了
回答4:1和2都是為了兼容IE事件的寫(xiě)法。
相關(guān)文章:
1. docker images顯示的鏡像過(guò)多,狗眼被亮瞎了,怎么辦?2. 大家好,請(qǐng)問(wèn)在python腳本中怎么用virtualenv激活指定的環(huán)境?3. 網(wǎng)頁(yè)爬蟲(chóng) - 用Python3的requests庫(kù)模擬登陸B(tài)ilibili總是提示驗(yàn)證碼錯(cuò)誤怎么辦?4. javascript - 關(guān)于audio標(biāo)簽暫停的問(wèn)題5. android - QQ物聯(lián),視頻通話(huà)6. Matlab和Python編程相似嗎,有兩種都學(xué)過(guò)的人可以說(shuō)說(shuō)嗎7. javascript - 微信小程序封裝定位問(wèn)題(封裝異步并可能多次請(qǐng)求)8. javascript - Web微信聊天輸入框解決方案9. mysql - 怎么讓 SELECT 1+null 等于 110. 請(qǐng)教各位大佬,瀏覽器點(diǎn) 提交實(shí)例為什么沒(méi)有反應(yīng)
