【问题标题】:Get element by name in express/node在 express/node 中按名称获取元素
【发布时间】:2021-07-14 22:18:10
【问题描述】:

我正在创建一个 express/node 应用程序,我想按名称获取一个元素,但是当我使用 document.getElementsByName() 时服务器崩溃了,那么如何在 express/node 上按名称获取一个元素?

【问题讨论】:

  • 节点在服务器上运行,文档元素在客户端。

标签: javascript html node.js express


【解决方案1】:

具有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()。这只在浏览器中运行。

【讨论】:

    【解决方案2】:

    Node.js 不在浏览器中运行,因此首先没有“文档”元素。如果您问的是如何在服务器端解析 HTML 文件,那就是另一个问题了。

    【讨论】:

    • 呃,nodejs 不在沙盒环境中运行。它只是运行在与浏览器完全不同的计算机和环境的服务器上。
    猜你喜欢
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 2016-03-05
    • 1970-01-01
    相关资源
    最近更新 更多