Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js脚本是否可以在同一文件中的EJS上下文/页面中写入变量_Javascript_Scope_Ejs - Fatal编程技术网

Javascript js脚本是否可以在同一文件中的EJS上下文/页面中写入变量

Javascript js脚本是否可以在同一文件中的EJS上下文/页面中写入变量,javascript,scope,ejs,Javascript,Scope,Ejs,正如我在标题中所写的,我想从写入ejs页面/文件的变量中,从同一页面中的javascript文件中获取一个值 EJS: JS: var getTest=测试; 或者,如果我想使用一个写入EJS文件的函数(带参数),并在JS上下文中使用该函数,其中参数是从JS上下文中指定给函数的,该怎么办 EJS: JS: var检验=101; fn(测试) 编辑:这一半人认为您正在服务器端使用EJS 1) 您可以将ejs变量值传递给Javascript变量 //由ejs创建的变量 var getT

正如我在标题中所写的,我想从写入ejs页面/文件的变量中,从同一页面中的javascript文件中获取一个值

EJS:


JS:


var getTest=测试;
或者,如果我想使用一个写入EJS文件的函数(带参数),并在JS上下文中使用该函数,其中参数是从JS上下文中指定给函数的,该怎么办

EJS:


JS:


var检验=101;
fn(测试)

编辑:这一半人认为您正在服务器端使用EJS

1) 您可以将ejs变量值传递给Javascript变量

//由ejs创建的变量
var getTest=//var-test现在被分配给getTest,它只在浏览器上工作
console.log(getTest);//在浏览器上成功打印101
只需创建一个ejs变量,并将脚本标记内的值分配给
var getTest

例如:
var getTest=

2) 不能将javascript变量值传递给ejs变量

是的,您不能:如果它在服务器上

原因:

EJS模板将在Javscript开始执行之前在服务器上呈现(它将在浏览器上启动),因此无法返回到服务器并要求对已发送到浏览器的页面进行一些以前的更改。
编辑:这一半人认为您正在客户端使用EJS

3) 如果EJS位于客户端,则将EJS变量传递给javascript

上面的答案仍然有效,但是您需要在EJS模板中加载脚本,而不是在呈现模板之前加载的脚本(在这种情况下,它当然不是有效的javascript)

4) 如果EJS位于客户端,则将javascript变量传递给EJS


很抱歉,我自己没有尝试过这个案例,但我真的很期待有人回答这个案例

上面的答案对我不适用。可以通过以下方式使用div:

<div id="mydiv" data-test=<%= test %>></div>

并访问在脚本标记中提供的数据变量“test”:

<script>var test = document.getElementById('mydiv').dataset.test</script>
var test=document.getElementById('mydiv').dataset.test
在您的

您可以创建
div
元素:

const div = document.createElement('div');
并给它一个
innerText
值,如:

div.innerText = `<%= data_from_your_server_response  %>`
div.innerText=``
如果您
console.log(div)
,将显示来自服务器响应的数据。

带有字符串的解决方案

//由ejs创建的变量
var getTest=“”//var-test现在被分配给getTest,它只在浏览器上工作
警报(getTest);//在浏览器上成功打印字符串

如果我想使用一个函数和一个参数,在EJS上下文中编写,并且参数应该从js脚本上下文中输入,该怎么办?EJS:
函数fn(par){…}
;JS:
var测试=101;fn(test)
如果您使用ejs服务器端,那么您需要做一些类似的事情,但是您可能应该用另一种方式(取决于具体的用例)。若您运行ejs客户端,那个么这仍然有效,但很可能您并没有做出错误的设计决策。
        <% var test = 101; %> // variable created by ejs
        <script>
           var getTest = <%= test  %>;  //var test is now assigned to getTest which will only work on browsers
           console.log(getTest);  // successfully prints 101 on browser
        </script>
<div id="mydiv" data-test=<%= test %>></div>
<script>var test = document.getElementById('mydiv').dataset.test</script>
const div = document.createElement('div');
div.innerText = `<%= data_from_your_server_response  %>`