正如我在标题中所写的,我想从一个写入ejs页面/文件的变量中获取一个值,该值来自同一页面中的一个JavaScript文件
EJS:
<% var test = 101; %>
JS:
<script>
var getTest = test;
</script>
或者,如果我想使用一个写进EJS文件的函数(带参数),并在JS上下文中使用这个函数,其中参数是从JS上下文中提供给函数的,那该怎么办
EJS:
<% function fn(par){ ... } %>
JS:
<script>
var test = 101;
<%>fn(test)<%>
</script>
6条答案
按热度按时间2exbekwf1#
编辑:本半会认为您在server侧使用EJS
1)您可以将ejs变量值传递给JavaScript变量
只需创建一个ejs变量,并将script标记中的值赋给
var getTest
例如:
var getTest = <%= test %>;
2)你不能把一个javascript变量值传递给一个ejs变量
是的,您不能:如果它在服务器上。
原因:
EJS模板将在JavaScript开始执行之前在服务器上呈现(它将在浏览器上启动),因此没有办法返回服务器并要求已经发送到浏览器的页面上的一些先前的更改。
编辑:本半会认为您使用的是Client侧的EJS
3)如果EJS在客户端,则将EJS变量传递给javascript
上面的答案仍然有效,但是你需要在EJS模板中加载***脚本***,而不是在模板渲染之前加载的脚本(在这种情况下,它当然不是有效的javascript)。
4)如果EJS在客户端,则将javascript变量传递给EJS
我很抱歉我自己没有尝试过这种情况下,但我真的很期待,如果有人回答这个问题
wlp8pajw2#
上面的答案对我不起作用。你可以这样使用div:
并访问您在脚本标记中提供的数据变量'test':
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/dataset
whlutmcx3#
带字符串的解决方案
不要忘记“<%= test %>”周围的引号
xjreopfe4#
如果
test
是一个对象,你可以这样做:不过,根据您的代码编辑器的不同,它可能会显示此语法不好,并使用红色下划线将其标记为语法错误。但是,当您运行它时,它工作得非常好。
7ajki6be5#
在你的
<script>
里面你可以创建一个
div
元素:并给予它一个
innerText
值,如下所示:如果您使用
console.log(div)
,则将显示来自服务器响应的数据。9njqaruj6#
下面是一个不使用
div
的解决方案,也不会让我的代码编辑器发疯。