Arrays can';在html脚本标记中将EJS变量推送到数组中?
我正在尝试用一些测试坐标构建一个数组,用于OpenLayers覆盖 代码如下:Arrays can';在html脚本标记中将EJS变量推送到数组中?,arrays,node.js,mongodb,variables,ejs,Arrays,Node.js,Mongodb,Variables,Ejs,我正在尝试用一些测试坐标构建一个数组,用于OpenLayers覆盖 代码如下: var parada = []; for(var i = 0; i < <%- coords.length%>; i++){ //First loop to fill the array var arr = [<%- coords[i].lon %>, <%- coords[i].lat %>]; //THIS IS THE ERROR LINE! ... say
var parada = [];
for(var i = 0; i < <%- coords.length%>; i++){ //First loop to fill the array
var arr = [<%- coords[i].lon %>, <%- coords[i].lat %>]; //THIS IS THE ERROR LINE! ... says the console...
parada.push(arr);
}
var overlays = [];
for (i = 0; i < parada.lenght; i++) { //Second loop to build the overlays
overlays.push(new ol.Overlay({
position: ol.proj.fromLonLat([parada[i][0], parada[i][1]]), //With the data of the array above
positioning: 'center-center',
element: document.getElementById('parada' + i),
stopEvent: false
}));
}
for (i = 0; i<overlays.length; i++){ // Last loop to assign the overlays.
map.addOverlay(overlays[i]);
}
var parada=[];
for(var i=0;i<;i++){//填充数组的第一个循环
var arr=[,];//这是错误行!…控制台说。。。
帕拉达推(arr);
}
var覆盖=[];
对于(i=0;i for(i=0;i您的变量i
存在于客户端JS中,而不是服务器端JS中
有各种各样的方法可以解决这个问题,其中之一是:
var parada = <%- JSON.stringify(coords.map(function(pair) {
return [pair.lon, pair.lat];
})) %>;
var parada=;
我假设lon
和lat
总是数字,这样就不会有注射攻击的风险
或者,您可以在调用模板之前进行转换,避免模板本身的复杂性
顺便说一句,您的变量i
存在于客户端JS中,而不是服务器端JS中
有各种各样的方法可以解决这个问题,其中之一是:
var parada = <%- JSON.stringify(coords.map(function(pair) {
return [pair.lon, pair.lat];
})) %>;
var parada=;
我假设lon
和lat
总是数字,这样就不会有注射攻击的风险
或者,您可以在调用模板之前进行转换,避免模板本身的复杂性
顺便说一句,您在lenght
中也有一个输入错误,因此您可以更轻松地在客户端处理数据
var lon = [];
var lat = [];
for (var i = 0; i < <%=lon.length%>; i++ ) {<%for(var x = 0; x < lon.length ;x++) { %>
lon.push(<%= lon[x] %>);
lat.push(<%= lat[x] %>);
<% } %>}
var lon=[];
var-lat=[];
对于(var i=0;i<;i++){
lon.push();
横向推力();
}
通过这种方式,我在客户端使用EJS构建了一个数组
//Create the Overlays Array
var overlays = [];
for (var i = 0; i < <%=lon.length%>; i++ ) {
overlays.push(new ol.Overlay({
position: ol.proj.fromLonLat([lon[i], lat[i] ]),
positioning: 'center-center',
element: document.getElementById('parada' + i),
stopEvent: false
}));
}
//创建覆盖数组
var覆盖=[];
对于(变量i=0;i<;i++){
叠加。推送(新的ol叠加)({
职位:LONLAT的ol.项目([lon[i],lat[i]]),
定位:'中心',
元素:document.getElementById('parada'+i),
stopEvent:false
}));
}
然后我可以在任何需要的地方简单地使用这个数组
感谢@skirtle的帮助,您让我了解了这个问题;)做了一个更改,以便更轻松地处理客户端的数据
var lon = [];
var lat = [];
for (var i = 0; i < <%=lon.length%>; i++ ) {<%for(var x = 0; x < lon.length ;x++) { %>
lon.push(<%= lon[x] %>);
lat.push(<%= lat[x] %>);
<% } %>}
var lon=[];
var-lat=[];
对于(var i=0;i<;i++){
lon.push();
横向推力();
}
通过这种方式,我在客户端使用EJS构建了一个数组
//Create the Overlays Array
var overlays = [];
for (var i = 0; i < <%=lon.length%>; i++ ) {
overlays.push(new ol.Overlay({
position: ol.proj.fromLonLat([lon[i], lat[i] ]),
positioning: 'center-center',
element: document.getElementById('parada' + i),
stopEvent: false
}));
}
//创建覆盖数组
var覆盖=[];
对于(变量i=0;i<;i++){
叠加。推送(新的ol叠加)({
职位:LONLAT的ol.项目([lon[i],lat[i]]),
定位:'中心',
元素:document.getElementById('parada'+i),
stopEvent:false
}));
}
然后我可以在任何需要的地方简单地使用这个数组
谢谢@shirtle的帮助,你让我了解了这个问题;) 谢谢!它似乎有效:)我像你说的那样把你的代码放在app.js文件中。还有一件事:我现在如何在EJS中调用变量?或者两者似乎都不起作用。。。非常感谢你的帮助!你太棒了:D@AlanSchwarz变量parada
仅存在于客户端JS中,而不存在于服务器端JS中。
内部的代码与外部的代码完全分离,两者都使用JavaScript只是巧合。从EJS的角度来看,只有
内部的代码被解释为代码,外部的位只是可以喷射出来的任意文本。模板生成的文本随后被发送到浏览器(您可以在开发工具中看到),然后浏览器运行生成的代码。这两个过程完全不同。谢谢!它似乎有效:)我像你说的那样把你的代码放在app.js文件中。还有一件事:我现在如何在EJS中调用变量?或者两者似乎都不起作用。。。非常感谢你的帮助!你太棒了:D@AlanSchwarz变量parada
仅存在于客户端JS中,而不存在于服务器端JS中。
内部的代码与外部的代码完全分离,两者都使用JavaScript只是巧合。从EJS的角度来看,只有
内部的代码被解释为代码,外部的位只是可以喷射出来的任意文本。模板生成的文本随后被发送到浏览器(您可以在开发工具中看到),然后浏览器运行生成的代码。这两个过程是完全不同的。