全局变量只返回循环中最后一个实例的值
Global variable only returns value from the last instance in a loop
我在ajax请求之外创建了一个全局变量;var pos = [];
收集来自我的api的特定"作业"的经纬度信息。"Jobs"在ajax请求之外也有它自己的全局变量,用于收集每个作业(var Jobs = [];
)的数据数组。在ajax请求中,我使用了通用的Jobs = data
来为成功时在请求中收集的数据设置变量值(success: function (data) {Jobs = data; ...
)。然后使用Jobs.forEach
循环遍历每个Job。然后在为每个作业创建的标记上使用.getLatLng
传单方法为pos
变量赋值。我的问题是,当我尝试在forEach循环之外调用pos
变量(我使用console.log(pos);
进行测试)时,它只返回最后一个实例。有什么建议我做错了吗?我的简化代码如下。注意:我试图在另一个请求中调用pos
,但它适用于全局Jobs
变量。
var grid = L.geoJson();
var Jobs = {};
var pos = [];
//var control = L.control.layers(grid).addTo(map);
// This is the ajax request for the jobs data
$.ajax({
type: 'GET',
url: url,
timeout: 8000,
crossDomain: true,
dataType: 'json',
data: Jobs,
...
//Renders data to view
success: function (data) {
Jobs = data;
Jobs.forEach(function (value) {
console.log (pos);
...
var latitude = value.latitude;
var longitude = value.longitude;
...
var marker = L.marker([value.latitude, value.longitude]).addTo(map);
pos = marker.getLatLng();
...
console.log (pos);
});
// Fetch the file data making the grid
$.getJSON('./grid.geojson', function (data) {
// Assign the results to the geojsonData variable
console.log(Jobs);
console.log(pos);
每次都用新的标记覆盖pos
变量。pos = marker.getLatLng();
相反,您需要将新值.push
添加到数组中,这会将每个新值添加到数组
pos.push(marker.getLatLng()); //['marker1']
那么下一次循环运行时,将添加下一个标记
pos.push(marker.getLatLng()); //['marker1', 'marker2']
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/push 相关文章:
- 表追加而不附加最后一个元素
- 无法在Ionic select中预先选择最后一个选项
- 为什么画布形状只在3个画布中的最后一个画布上渲染
- Jquery append oly获取循环Rails中的最后一个elemen
- 如何创建更好的方式来维护基于我的代码访问的最后一个页面
- dataTables-如何自定义分页类型以显示最后一个页码后面的省略号,
- 多维关联数组的最后一个索引
- 挖空视图模型函数仅影响最后一个实例
- 插件总是只得到最后一个实例,如何让它适用于多个元素
- 使用javascript删除特定HTML实体(breadcrumb)的最后一个实例
- 多个 xmlhttp 请求会导致除最后一个实例之外的所有实例的 readystate 都达不到 4
- 替换字符串中匹配的最后一个模式实例
- 在javascript中实例化循环中的类使用最后一个值
- Regex只捕获匹配中捕获组的最后一个实例
- 只替换最后一个实例中的字母
- 全局变量只返回循环中最后一个实例的值
- 如何在子字符串 B 的第一个实例之前找到子字符串 A 的最后一个实例
- 使用getElementById创建表只显示最后一个实例
- Javascript指向最后一个对象实例
- 在删除字符串的最后一个实例时使用Regex或lastIndexOf