2014-05-22 47 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