【问题标题】:Get <p> tag content in ejs variable获取ejs变量中的<p>标签内容
【发布时间】:2026-02-10 09:45:01
【问题描述】:

我想在 ejs 变量中存储&lt;p&gt; 标签内容。

<div id="testDiv">
    <p id="num">5</p>

<% 
    var val = 0;
    val = document.getElementById('num').innerHTML;
    console.log(val);    // val = 5
%>

</div>

【问题讨论】:

    标签: javascript html node.js ejs


    【解决方案1】:

    你不能那样做,嗯……至少不能直接这样做。 ejs 在服务器上而不是在客户端上呈现,因此它无权访问浏览器提供的document

    如果您想在客户端使用 JavaScript,那么您应该将 ejs 更改为简单的 script 元素。

    <div id="testDiv">
      <p id="num">5</p>
    
      <script> 
        var val = 0;
        val = document.getElementById('num').innerHTML;
        console.log(val);    // val = 5
      </script>
    
    </div>
    

    虽然我建议不要采用这种方法,并将 JavaScript 代码移动到外部 js 文件中。

    但是,如果您出于某种原因确实需要将该值放入 ejs,那么您可以像这样使用 JavaScript 提取它,将其发送到服务器并使用该值重新渲染视图。

    【讨论】:

    • 我们可以将&lt;script&gt; 变量值存储在ejs 变量中吗? @Matus Dubrava
    • @shaibazBadai 好吧,是的,也不是。 &lt;% %&gt; 所包含的代码是服务器端 JavaScript。 &lt;script&gt; 元素中的代码是客户端 JavaScript。这是两个不同的环境,它们不能直接相互通信,只能通过请求。同样,如果你想从客户端变量中获取一些值到&lt;% %&gt;,那么你需要在一些请求中将该值发送到服务器,并使用传递给该视图的值重新渲染视图。