為什么要使用這樣的方法?
這是老師的代碼
//事件綁定方法 function?bind(el,?eventType,?callback){ ????if(typeof?el.addEventListener?===?'function'){ ????????//標準事件綁定方法 ????????el.addEventListener(eventType,?callback,?false); ????}else?if(typeof?el.attechEvent?===?'function'){ ????????//IE事件綁定方法 ????????el.attachEvent('on'?+?eventType,?callback); ????} } //鼠標懸停的處理函數(shù) function?mouseoverHandler(e){ ????var?target?=?e.target?||?e.srcElement; ????var?outer?=?document.getElementById('subject'); ????var?list?=?outer.getElementsByTagName('li'); ????//清空所有LI元素的class ????for(var?i?=?0;?i?<?list.length;?i++){ ????????list[i].className?=?''; ????} ????//根據(jù)事件的冒泡原理,找到需要變更class?的LI元素 ????while(target.tagName?!=?'LI'?||?target.tagName?==?'BODY'){ ????????target?=?target.parentNode; ????} ????target.className?=?'big'; }我的代碼:
?for(var?i?=0;?i?<?list.length;?i++){ ????????list[i].onmouseenter=function(){ ???????? for(var?i=0;i<list.length;i++){ ???????? list[i].className=""; ???????? } ???????? this.className="big"; } }疑問:為什么老師要使用事件監(jiān)聽的方法?
onmouseenter不是在這里更方便嗎?
而且兼容各大瀏覽器包括IE5.5,并且不會發(fā)生冒泡事件。
謝謝回答!
2016-09-28
addEventListener綁定的事件可以有多個,比如addEventListener(eventType,?callback1,?false);
addEventListener(eventType,?callback2,?false);
callback1,callback2都能執(zhí)行,
如果直接綁定事件,比如onmouseenter,一開始時,該事件你只要執(zhí)行callback1,后來業(yè)務拓展,需要在加個callback2方法,如果是直接綁定事件,后面的會覆蓋前面的,看一下代碼
list[i].onmouseenter=callback1();
list[i].onmouseenter=callback2();
是不是相當于onmouseenter這個事件被重新改寫了,所以兩者的差別在于是否易于擴展業(yè)務需求。
當然在這個課程中并沒有突出哪種更合適,所以還是要看具體的項目需求,按需選擇,望采納,謝謝