【发布时间】:2021-07-14 22:18:10
【问题描述】:
我正在创建一个 express/node 应用程序,我想按名称获取一个元素,但是当我使用 document.getElementsByName() 时服务器崩溃了,那么如何在 express/node 上按名称获取一个元素?
【问题讨论】:
-
节点在服务器上运行,文档元素在客户端。
标签: javascript html node.js express
我正在创建一个 express/node 应用程序,我想按名称获取一个元素,但是当我使用 document.getElementsByName() 时服务器崩溃了,那么如何在 express/node 上按名称获取一个元素?
【问题讨论】:
标签: javascript html node.js express
具有document.getElementsByName() 的document 对象是在浏览器中运行的Javascript 可以使用的。在 nodejs 中运行的 Javascript 不能使用它,因为文档存在于浏览器中,而不是 nodejs 中。
看来您可能不太了解 Web 的客户端/服务器性质。用户启动在其计算机上运行的浏览器。当您在浏览器的 URL 栏中键入 URL 并按 Enter 键时,它会向 Web 服务器(通常在 Internet 上的其他地方关闭的另一台计算机)发送请求。该网络服务器接收请求,查看 URL 的路径是什么以及 URL 上的任何参数,然后发回内容。
如果 URL 表示的是 HTML 页面,则浏览器(在最终用户的计算机上运行)获取该 HTML 页面,对其进行解析并在浏览器中显示。如果对其他资源(例如图像或脚本)有任何引用,则浏览器也会向服务器请求这些资源。
如果网页中有 Javascript,则浏览器会在浏览器中运行该 Javascript。正是这个 Javascript 可以使用 document.getElementsByName()。这不是 nodejs Javascript,这是要在网页中运行的 Javascript。
人们偶尔会感到困惑的是,网页 Javascript 实际上存在于服务器的硬盘驱动器的某个地方。当浏览器请求该脚本或该网页时,nodejs 服务器获取该请求并将该网页或脚本发送回浏览器。因此,虽然网页脚本存在于 nodejs 服务器上,但它实际上并没有在那里运行 - 那只是它的存储位置,以便可以在请求时将其发送到浏览器。在浏览器中运行时,只能使用浏览器API,不能使用nodejs API。
你的 nodejs 服务器本身的 Javascript 在服务器上运行。它只能使用 nodejs API,不能使用浏览器 API。所以,这就是为什么 nodejs Javascript 不能使用document.getElementsByName()。这只在浏览器中运行。
【讨论】:
Node.js 不在浏览器中运行,因此首先没有“文档”元素。如果您问的是如何在服务器端解析 HTML 文件,那就是另一个问题了。
【讨论】: