在nodejs require语句之后无法操作dom对象

时间:2017-05-24 01:15:39

标签: javascript node.js

我正在尝试学习nodejs,并且在server.js文件中使用require语句后我无法操作DOM对象。但是,没有它它会正常工作。当我点击浏览器中的段落时,它不会改变。有谁知道为什么?

的index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">
    </script>
</head>
<body>
    <p id="demo">Click me to change my HTML content (innerHTML)</p>

    <script src="server.js"></script>
</body>
</html>

server.js

var config = require('./config');

document.addEventListener('DOMContentLoaded', function() {
    $("#demo").click(function () {
        document.getElementById("demo").innerHTML = "Paragraph changed!";
    })
});

2 个答案:

答案 0 :(得分:1)

如果您使用节点运行服务器文件,document将不会引用您的浏览器。您的浏览器不可用于Node。只有前端的javascript才能引用DOM。此外,如果您没有使用某些捆绑器(如browserify),则在前端javascript中使用require会引发错误,因此以下jQuery代码将无法运行。打开浏览器的开发人员工具,您应该会在控制台中看到错误。

节点不适用于DOM,不应将服务器文件插入HTML。将服务器代码与前端代码分开。 Node旨在设置服务器并提供文件,而不是与DOM一起使用。尝试阅读有关Node及其用途的更多信息,并可能做一些教程来熟悉它。

答案 1 :(得分:0)

在浏览器中打开html,consle表示require未定义     在server.js:1。在html脚本中不支持require语法