2014-05-22 49 views
1

以下是我的所有代碼...內聯JavaScript警報正在很好地觸發,但外部警報不是。每當我重新加載頁面,我得到一個控制檯錯誤日誌說「TypeError:tileBlock爲空」..任何想法?我還沒有遇到這個問題,我寧願不被迫將所有的Javascript事件處理程序內聯編寫。謝謝!Javascript錯誤:元素爲空

#tileBlock { 
    position: fixed; 
     top: 0; 
     right: 0; 
     bottom: 0; 
     left: 0; 
     background-color: #0b0b0b; 
     background-position: center; 
     background-repeat: no-repeat; 
     background-image: url(photo.jpg); 
     border: 20px solid #fff; 
     background-size: cover; 
    } 

    @media (max-width: 400px) { 
     #tileBlock { 
     border-width: 8px; 
     } 
    } 


<body> 
    <div class="wrapper" id="tileBlock" onclick="alert('You clicked (inline)')"></div> 
</body> 




var tileBlock = document.getElementById('tileBlock'); 
tileBlock.onclick = function() { 
    alert('you clicked(external script)'); 
} 
+3

你的腳本應該在裏面標籤 – juvian

+0

這是在一個外部JavaScript文件 - 反正我得到了相同的結果不需要窗口時,我嘗試將它放在腳本標記中的同一個文件中 –

+1

然後,您缺少一個'window.onload'來在頁面加載後運行腳本 – juvian

回答

1

包括jQuery庫,並嘗試這樣的:

$('#tileBlock').onclick(function(){ 
    alert('you clicked(external script)'); 
    }); 

而且我已經試過你的代碼和它的作品(不是我的jQuery) 試試這個:http://jsfiddle.net/XcsN/evK3v/

+0

非常感謝!我看着你的JsFiddle,它正在調用腳本。我添加了window.onload並解決了它...我嘗試了你的JQuery,但是這看起來並不簡單或者更有效,所以我想我會去用vanilla .. –

0

我只是需要一個窗口.onload ...感謝大家的幫助!

window.onload=function(){ 
var tileBlock = document.getElementById('tileBlock'); 
tileBlock.onclick = function() { 
    alert('you clicked yes'); 
} 
}; 
0

之前,因爲它保留

onload=()=>{ 
    let elem // etc.. 
    elem.onclick=()=> // stuff .. 
} 

fiddle