課程
/前端開發(fā)
/JavaScript
/DOM事件探秘
錯誤,?Cannot read property 'addEventListener' of null
2016-04-21
源自:DOM事件探秘 2-4
正在回答
終于找出來了問題了。
1、removeHandler這個方法上面的花括號后面少了一個逗號,這個影響挺大的
2、我把script放在head中引起的。html元素是自上而下渲染的,如果放在head中,這時候body還沒有被渲染,javascript代碼操作的對象都沒有,報錯是很正常的。
<!DOCTYPE?html> <html> <head> <meta?charset="utf-8"> <title>0421——DOM0級與DOM2級處理事件</title> </head> <body> <input?type="button"?value="按鈕一"?id="btn1"?onclick="showmen()"> <input?type="button"?value="按鈕二"?id="btn2"> <input?type="button"?value="按鈕三"?id="btn"> <script?type="text/javascript"> function?showmen(){ alert("Hello?world!"); } //DOM0級處理事件 var?btn2=document.getElementById("btn2"); var?btn=document.getElementById("btn"); btn2.onclick=function(){ alert('時間2號');}; //btn2.onclick=null; //DOM2級處理事件 //btn3.addEventListener('click',showmen,false); //btn3.attachEvent('onclick',showmen); //解決瀏覽器兼容性問題 var?eventUtil={ //添加句柄 addHandler:function(element,?type,?handler){ if(element.addEventListener){ element.addEventListener(type,handler,false); //DOM2級處理事件兼容chrome和火狐 }else?if(element.attachEvent){ element.attachEvent('on'+type,handler); //DOM2級處理事件兼容IE8以及更早的瀏覽器版本,只支持事件冒泡 }else{ element['on'+type]=handler; //DOM0級處理事件element.onclick等價于element['onclick'] } },//這個都好很重要,一定不要忘了。 removeHandler:function(element,type,handler){ ???if(element.removeEventListener){ ?????????????????element.removeEventListener(type,handler,false); ???????????????}else?if(element.detachEvent){ ?????????????????element.detachEvent('on'+type,handler); ???????????????}else{ ?????????????????element['on'+type]=null; ???????????????} } } eventUtil.addHandler(btn,'click',showmen); </script> </body> </html>
<!DOCTYPE?html> <html> <head> <meta?charset="utf-8"> <title>0421_DOM0級與DOM2級處理事件</title> <script?type="text/javascript"> function?showMes(){ alert("Hello?world!"); } //DOM0級處理事件 var?btn2=document.getElementById("btn2"); var?btn3=document.getElementById("btn3"); //解決瀏覽器兼容性問題 var?eventUtil={ //添加句柄 addHands:function(element,type,handler){ if(element.addEventListener){ element.addEventListener(type,handler,false); //DOM2級處理事件兼容chrome和火狐 }else?if(element.attachEvent){ element.attachEvent('on'+type,handler); //DOM2級處理事件兼容IE8以及更早的瀏覽器版本,只支持事件冒泡 }else{ element['on'+type]=handler; //DOM0級處理事件element.onclick等價于element['onclick'] } } removeHands:function(element,type,handler){ if(element.removeEventListener){ element.removeEventListener(type,handler,false); }else?if(element.detachEvent){ element.detachEvent('on'+type,handler); }else{ element['on'+type]=null; } } } eventUtil.addHands(btn3,'click',showMes); </script> </head> <body> <input?type="button"?value="按鈕一"?id="btn1"?onclick="showMes()"> <input?type="button"?value="按鈕二"?id="btn2"> <input?type="button"?value="按鈕三"?id="btn3"> </body> </html>
舉報
DOM事件?本課程會通過實例來給小伙伴們講解如何使用這些事件
3 回答drag.js:4 Uncaught TypeError: Cannot read property 'getElementsByTagName' of null
2 回答Uncaught TypeError: Cannot set property 'onclick' of null
2 回答點了登錄沒反應(yīng) 檢查好幾遍了
1 回答Uncaught TypeError: Cannot read property 'getElementsByTagName' of null,一直報這個錯,有人遇到一樣的嗎?用google/firefox都試過了
4 回答為什么會出現(xiàn)Uncaught TypeError: Cannot read property 'css' of undefined 錯誤
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-04-22
終于找出來了問題了。
1、removeHandler這個方法上面的花括號后面少了一個逗號,這個影響挺大的
2、我把script放在head中引起的。html元素是自上而下渲染的,如果放在head中,這時候body還沒有被渲染,javascript代碼操作的對象都沒有,報錯是很正常的。
2016-04-21