我对javascript提出这个问题感到陌生,在这里绝对感到困惑。不知道为什么要尝试找出很多小时,但是例如,如果我的脚本中有这一行:
var listen = document.getElementsByClassName('test_this')[0];
在我的本地计算机上,当我在控制台中键入“ listen”时,它返回未定义的内容,但是如果我在控制台中手动键入此内容,它将起作用。例如:
HTML:
<p class='test_this'>hi</p>
JS:
var listen = document.getElementsByClassName('test_this')[0];
listen.addEventListener("click", function onclick(event) {
alert('hi');
});
function testZis() {
alert('test worked');
}
alert('saysHiAnyway');
Codepen网址:https://codepen.io/anon/pen/pqZNVR
如果我加载codePen URL,则会收到正确的警报,但是在浏览器的本地计算机上,我只会收到此错误:Cannot read property 'addEventListener' of undefined
且没有警报-大概是由于某种未知原因,var监听声明行不起作用。
有人可以解释这里发生了什么吗?我真的很感激。我觉得这很简单,但似乎很难识别。感谢您的帮助。
答案 0 :(得分:2)
您可以通过以下几种方法来解决此问题:
将<script>
标签放置在所有HTML代码的下方,紧接</body>
标签的上方。
替代方法是将所有代码包装在window.onload
事件处理程序中,如下所示:
window.onload = function() {
//All of your code goes here
}