javascript - 获取文档未定义,来自 document.getElementById

标签 javascript html atom-editor

我正在学习 JavaScript,并且正在使用 Atom(文本编辑器)。 在我的 HTML 文件中,我只有这个:

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="style.css">
    <script src="script.js"></script>
</head>
<body>
    <h1>Hello Plunker!</h1>
    <button id="displayTodosButton">Display Todos</button>
    <button>Toggle Todos</button>
</body>
</html>

在我的 javascript 文件中,我只是尝试使用此访问“显示待办事项”按钮:

var displayTodosButton = document.getElementById('displayTodosButton')

我正在看视频,讲师正在使用 plnkr.co ,他可以很好地访问按钮,但在 Atom 上我得到“ReferenceError:文档未定义”

我该如何解决这个问题?

enter image description here

最佳答案

yet on Atom I get

如果您的意思是 Atom,您的文本编辑器,正在突出显示它并向您显示一个警告 document是未定义的,只是 Atom 没有意识到您正在 document 的浏览器上下文中运行该代码将被定义。

它可能有一个设置,您可以告诉它您将在浏览器中运行代码,因此它可以采用默认的全局变量集( windowdocument 等)。


如果script.js中的代码正是你所展示的,虽然 Atom 显示的错误不会成为问题(因为在浏览器中, document 不会是 undefined ),你会得到 nullgetElementById 返回因为您的代码在元素存在之前运行。同样,这是假设代码是独立的,而不是(比如说)在 DOMContentLoaded 中。处理程序或类似的。

除非你有充分的理由这样做(而且理由不多),否则将 script head 中的元素是一种反模式。把它们放在 body ,就在最后,就在结束之前 </body>标签。这样,在它们之上定义的任何元素都将在您的代码运行之前由浏览器创建。

关于javascript - 获取文档未定义,来自 document.getElementById,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41225295/

相关文章:

javascript - GWT 中的 Google map FusionTable 实现

html - Content in::after绝对定位后不动

docker - 使用 Atom/Sublime-Text 编辑 Docker 容器 FS?

javascript - Firebase 和 JavaScript - 如何更新具有特定 ID 值的对象?

javascript - 如何让javascript将多维数组转换为字符串?

Javascript 函数为模板助手返回未定义

jquery - 使用 jQuery 在某些页面上隐藏 div

css - 字体大小和行间距 R Slidify

angular - Atom 需要很多时间来编译 angular 2 的 typescript 文件

atom-editor - atom 的 Windows 安装程序可以为所有用户安装吗?