我有一个很奇怪的问题。 在服务器端,我通过以下方式调用一个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>
我希望有人可以帮助我。
答案 0 :(得分:0)
不幸的是,我无法在ejs中对此进行测试,但是如果它是JavaScript数组,则可以...
JSON.stringify()
变量
<% 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>