为什么有些变量没有定义?

时间:2019-01-09 00:11:02

标签: javascript jquery html function

我对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监听声明行不起作用。

有人可以解释这里发生了什么吗?我真的很感激。我觉得这很简单,但似乎很难识别。感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您可以通过以下几种方法来解决此问题:

<script>标签放置在所有HTML代码的下方,紧接</body>标签的上方。

替代方法是将所有代码包装在window.onload事件处理程序中,如下所示:

window.onload = function() {
    //All of your code goes here
}