瀏覽器出現Cannot set property 'onclick' of null的問題


Part1:

當js文件放在head里面時,如果綁定了onclick事件,就會出現這樣的錯誤,

是因為W3School的寫法是瀏覽器先加載完按鈕節點才執行的js,所以當瀏覽器自頂向下解析時,找不到onclick綁定的按鈕節點,於是報錯。

【1】因此,需要把js文件放在底部加載,就會避免該問題。

【2】在js代碼外包一個window.onload = function(){} 即可解決問題

 代碼如下:[注]:這里的代碼只作為演示代碼

 1 <script>
 2             window.onload = function(){
 3                 var mainSlider  = document.getElementsByClassName("mian-slider")[0];
 4                 var aaa = mainSlider.children[0];
 5                 var ul = mainSlider.children[1];
 6                 var arrow = mainSlider.lastChild || mainSlider.lastElementChild;
 7                 var imgWidth  = mainSlider.offsetWidth;
 8 
 9 
10 
11                 
12 
13 
14             }
15         </script>
16         <div class="main-slider">
17             <a id="aaa">
18                 <img src="images/slide.jpg" alt="">
19                 <img src="images/slide1.jpg" alt="">
20                 <img src="images/slide2.jpg" alt="">
21                 <img src="images/slide3.jpg" alt="">
22                 <img src="images/slide4.jpg" alt="">
23                 <img src="images/slide5.jpg" alt="">
24             </a>
25             <ul>
26              <li></li>
27             </ul>
28             <div class="arrow">
29                 <a class="arrow-l" href="javascript:void(0)"><</a>
30                 <a class="arrow-r" href="javascript:;">></a>
31             </div>
32         </div>
View Code

Part2:

那么問題來了window.onload = function(){}又是什么呢?

window.onload 的意思就是頁面全部加載完成之后做一些事情,甚至包括圖片。

Part3:

那么如果這個問題該怎么解決呢?

 1 window.onload=function(){
 2 var o=document.getElementById('infozone');
 3 window.setInterval(function(){scrollup(o,20,0);},3000);
 4 }
 5 
 6 window.onload = function(){
 7 var $ = function($){
 8 return document.getElementById($);
 9 };
10 
11 window.onload = function(){
12 var $1 = function($1){
13 return document.getElementById($1);
14 };

[問題]:頁面只執行一個事件,另外兩個不執行.

我們應該怎么改寫能讓這三個onload()都能加載到頁面中?

[解決]:

 1 window.onload=function(){
 2     var o=document.getElementById('infozone');
 3     window.setInterval(function(){scrollup(o,20,0);},3000);
 4 
 5 
 6     var $ = function($){
 7         return document.getElementById($);
 8     }
 9     var $1 = function($1){
10         return document.getElementById($1);
11     }
12 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM