简体   繁体   English

ejs文件中的“未定义文档”错误,该文件将与node.js中的res.render()一起使用?

[英]“document is not defined ” error in ejs file which is to be used with res.render() in node.js?

I have this ejs file which is to be send as a response using res.render() in node.js 我有这个ejs文件,该文件将在node.js中使用res.render()作为响应发送

<!DOCTYPE html>
<html>
<head>  
  <title>pilcit</title>
</head>
<body>
<% var btn = document.getElementById('btn');%>
<% btn.style.background="blue"; %>
<div class="pt-5">
<div class="container-fluid">
    <h1  style="color:blue;" align=center>Pilcit</h2>
    <h4 style="color:#369bf4" align="center">The online clipboard</h4>

     <div>

         <textarea  class="form-control mt-5" name="content" rows="12">
            <%= result.content %>
         </textarea>
         <input type="text" value="sdfdsfsdfsd"  id="foo">
         <button id="btn" data-clipboard-target="#foo" copy clip </button>


    </div>  
    <!--<input type="submit" value="Create Clip">-->

</div>

but the line 但是线
`<% var btn = document.getElementById('btn');%> `<%var btn = document.getElementById('btn');%>

gives me this error 给我这个错误

ReferenceError: /home/ubuntu/workspace/pilcit/views/show.ejs:34
32| </head>
33| <body>
 >> 34|     <% var btn = document.getElementById('btn');%>
35| <div class="pt-5">
36| 
37|     <div class="container-fluid">

document is not defined
at eval (eval at compile (/home/ubuntu/workspace/pilcit/node_modules/ejs/lib/ejs.js:618:12), <anonymous>:17:27)
at returnedFn (/home/ubuntu/workspace/pilcit/node_modules/ejs/lib/ejs.js:653:17)
at tryHandleCache (/home/ubuntu/workspace/pilcit/node_modules/ejs/lib/ejs.js:251:36)
at View.exports.renderFile [as engine] (/home/ubuntu/workspace/pilcit/node_modules/ejs/lib/ejs.js:482:10)
at View.render (/home/ubuntu/workspace/pilcit/node_modules/express/lib/view.js:135:8)
at tryRender (/home/ubuntu/workspace/pilcit/node_modules/express

I'm not using the <% var btn = document.getElementById('btn');%> to change the background color of the btn, I want to use it with clipboard js. 我没有使用<%var btn = document.getElementById('btn');%>来更改btn的背景颜色,我想将其与剪贴板js一起使用。 I used that line to check whether the embedded javascript is working. 我用那条线检查嵌入式JavaScript是否正常工作。

You can't use document inside your ejs tags because that code is executed on the server. 您无法在ejs标记内使用document因为该代码是在服务器上执行的。 Instead you should add a script tag which will run as soon as the page is actually loaded in the browser. 相反,您应该添加一个脚本标记,该标记将在页面实际加载到浏览器中后立即运行。

<script> var btn = document.getElementById('btn'); </script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM