Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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
Javascript 未捕获的TypeError:无法使用JSON读取未定义的属性“0”_Javascript_Arrays_Json_Leaflet - Fatal编程技术网

Javascript 未捕获的TypeError:无法使用JSON读取未定义的属性“0”

Javascript 未捕获的TypeError:无法使用JSON读取未定义的属性“0”,javascript,arrays,json,leaflet,Javascript,Arrays,Json,Leaflet,我正在尝试创建一个传单标记的JS数组,但它一直告诉我标记[]数组的属性“0”未定义,我认为这是通过json_encode将PHP变量$data传输到JS var a[]时产生的问题,但我对此不确定 我正在使用Altervista,我试图用各种可能的方法解决这个问题 $sql=mysqli\u query$connection,从ritrovamento中选择*; 而$row=mysqli\u fetch\u row$sql { $data[]=$row; } 和控制台。logMarkers[

我正在尝试创建一个传单标记的JS数组,但它一直告诉我标记[]数组的属性“0”未定义,我认为这是通过json_encode将PHP变量$data传输到JS var a[]时产生的问题,但我对此不确定

我正在使用Altervista,我试图用各种可能的方法解决这个问题

$sql=mysqli\u query$connection,从ritrovamento中选择*; 而$row=mysqli\u fetch\u row$sql { $data[]=$row; } 和控制台。logMarkers[1]给了我:

e {options: {…}, _latlng: M, _initHooksCalled: true}
options:
icon: e
options: {iconUrl: "images/digging.gif", iconSize: Array(2), iconAnchor: Array(2), popupAnchor: Array(2)}
_initHooksCalled: true
__proto__: v
__proto__: Object
_initHooksCalled: true
_latlng: M
lat: 45.255091
lng: 8.514025
__proto__: Object
__proto__: e

标记[0]和标记[2]也是如此。

由于不增加i,所以有一个无限循环。在第二次迭代中,您会得到一个错误,因为没有j[1]

for循环需要增加这两个变量,它应该测试j,因为它是您正在读取的数组的索引

for (i = 0, j = 0; j < a.length; j++, i += 3) {
    Markers[i] = L.marker([a[j][0], a[j][1]], {icon: shovelIcon});
    Markers[i + 1] = L.marker([a[j][0], a[j][1]], {icon: diggingIcon});
    Markers[i + 2] = L.marker([a[j][0], a[j][1]], {icon: clickedIcon});
    Markers[i].addTo(mymap);   
}

这个物体到底是什么样子的?一个示例可以帮助您获得答案。i+3在for循环中应该做什么?这不应该是i=i+3吗?我不理解这个循环。i是指向标记的索引,而不是指向a的索引,那么为什么要将其与a.length进行比较呢?j是指向a的索引,所以应该将其与a.length进行比较。更正for循环中的增量,因为数组中只有一个元素,所以没有任何更改。注释不用于扩展讨论;这段对话已经结束。
e {options: {…}, _latlng: M, _initHooksCalled: true}
options:
icon: e
options: {iconUrl: "images/digging.gif", iconSize: Array(2), iconAnchor: Array(2), popupAnchor: Array(2)}
_initHooksCalled: true
__proto__: v
__proto__: Object
_initHooksCalled: true
_latlng: M
lat: 45.255091
lng: 8.514025
__proto__: Object
__proto__: e
for (i = 0, j = 0; j < a.length; j++, i += 3) {
    Markers[i] = L.marker([a[j][0], a[j][1]], {icon: shovelIcon});
    Markers[i + 1] = L.marker([a[j][0], a[j][1]], {icon: diggingIcon});
    Markers[i + 2] = L.marker([a[j][0], a[j][1]], {icon: clickedIcon});
    Markers[i].addTo(mymap);   
}