如何在客户端的函数中使用node.js变量?

时间:2019-02-26 21:36:43

标签: javascript node.js express ejs

我有一个很奇怪的问题。 在服务器端,我通过以下方式调用一个ejs页面:

res.render('index', {varArray: JSON.parse(response)});

当我尝试在HTML代码中使用变量“ varArray”时,一切正常,例如:

<% for (var i = 0; i < varArray.length; i++) { %>
    <option value="<%= varArray[i].id %>"><%= varArray[i].name %></option>
<% } %>

但是:只要我想在同一页面上的函数中使用同一变量,就会收到一条错误消息,指出该变量未定义。

<body>
<script>
function test() {
  for (var i = 0; i < varArray.length; i++) {
// do something
  }
};
</script>

我希望有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

不幸的是,我无法在ejs中对此进行测试,但是如果它是JavaScript数组,则可以...

  1. JSON.stringify()变量
  2. 将字符串打印到dom
  3. 将其分配给所需范围内的变量。

<% for (var i = 0; i < varArray.length; i++) { %>
    <option value="<%= varArray[i].id %>"><%= varArray[i].name %></option>
<% } %>

<script>
var varArray = <%= JSON.stringify(varArray) %>;

function test() {
  for (var i = 0; i < varArray.length; i++) {
// do something
  }
};
</script>

如果test()函数不是通过ejs呈现的,则可以将其分配给全局对象(窗口),然后在定义它后的任何地方使用它...

<% for (var i = 0; i < varArray.length; i++) { %>
    <option value="<%= varArray[i].id %>"><%= varArray[i].name %></option>
<% } %>

<script>
window.varArray = <%= JSON.stringify(varArray) %>;
</script>

<script>
function test() {
  for (var i = 0; i < varArray.length; i++) {
// do something
  }
};
</script>