Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
Arrays can';在html脚本标记中将EJS变量推送到数组中?_Arrays_Node.js_Mongodb_Variables_Ejs - Fatal编程技术网

Arrays can';在html脚本标记中将EJS变量推送到数组中?

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

我正在尝试用一些测试坐标构建一个数组,用于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! ... 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;ifor(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的角度来看,只有
内部的代码被解释为代码,外部的位只是可以喷射出来的任意文本。模板生成的文本随后被发送到浏览器(您可以在开发工具中看到),然后浏览器运行生成的代码。这两个过程是完全不同的。