Javascript JS onload函数中的EJS access express变量

Javascript JS onload函数中的EJS access express变量,javascript,node.js,onload,ejs,Javascript,Node.js,Onload,Ejs,我知道你可以在ejs文件中得到变量的值 <h1><%= title %></h1> 如果在同一ejs页面的onload javascript函数中使用相同的title变量,我将如何使用它。比如说 <script> window.onload(){ var s = <%= title %> alert(s); } </script> window.onload(){ 变量s= 警报; } 此函数将生成一个控制台错误

我知道你可以在ejs文件中得到变量的值

<h1><%= title %></h1>

如果在同一ejs页面的onload javascript函数中使用相同的title变量,我将如何使用它。比如说

<script>
window.onload(){
var s = <%= title %>
alert(s);
}
</script>

window.onload(){
变量s=
警报;
}
此函数将生成一个控制台错误:

未捕获语法错误:意外的标识符

虽然我能够看到变量的实际值,但我认为您应该尝试: html:


Js:


window.onload(){
var s=document.getElementById(“title”).innerText;
警报;
}

要在脚本中输出它,需要将结果理解为代码

由于您没有注意到
title
的值,因此我将假设以下示例:

res.render('view', { title: 'My Site' });

当您使用
var s=
时,这将导致创建以下语句:

var s = My Site
在这种情况下,
My
Site
被解释为仅由意外空格分隔的单个变量。当引擎到达
站点
时,在它们之间没有操作员,引擎会感到困惑,因此会得到
意外标识符


它需要创建以下语句:

var s = "My Site"
因此,客户端脚本也可以将其理解为字符串值

实现这一点的一个技巧是使用。由于JSON的语法来自JavaScript的表达式和文本,因此JavaScript引擎能够在许多上下文中理解结果(尽管它自己对字符串、对象等有自己的理解):

var s=
但是请注意,切换到使用
相比。这将禁用HTML编码,这是不必要的,并且当您

var s=
这会像解析HTML一样解析它,所以没有引号。例如,如果标题是“我的页面”,您的javascript将是:

var s = My Page
由于我的页面周围没有引号,因此会出现JavaScript错误。您可以使用
JSON.parse
,或者在其周围加引号来解决此问题:

var s = "<%= title %>"
var s=“”

我在第三行中添加了“;”,这是我尝试的方法,但我想知道这是否是正确的方法(将其分配给html标记(style=hidden),然后在onload@vardha:这应该是公认的答案。解释得很好,切中要害。
var s = <%- JSON.stringify(title) %>
var s = My Page
var s = "<%= title %>"