javascript - 未捕获的类型错误:无法使用 JSON 读取未定义的属性“0”
问题描述
我正在尝试创建一个传单标记的 JS 数组,但它一直告诉我 Markers[] 数组的属性“0”未定义,我认为这是将 PHP 变量 $data 转移到 JS var a [] 通过 json_encode,但我不确定。
我正在研究 Altervista,我试图以各种可能的方式解决问题。
$sql = mysqli_query($connection, "SELECT * FROM ritrovamento");
while($row = mysqli_fetch_row($sql))
{
$data[] = $row;
}
var a = <?php echo json_encode($data); ?>;
var Markers = [];
var Popups = [];
var j = 0;
var i = 0;
for(i = 0; i < a.length; i = 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);
j++;
}
未捕获的类型错误:无法读取未定义的属性“0”(此错误出现在我试图将数据放入标记 [i] 的地方)。
console.log(a) 给我:
[Array(5)]
0: Array(5)
0: "45.255091"
1: "8.514025"
2: "/images/bo.gif"
3: "wdqd"
4: "wd"
和 console.log(Markers[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
Markers[0] 和 Markers[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);
}
这是完整的代码。我调整了Markers
数组的内容,因为我没有L.marker()
函数,但它仍然a
以相同的方式访问数组。
var a = [
["45.255091", "8.514025", "/images/bo.gif", "wdgd", "wd"]
];
var Markers = [];
var j, i;
var mymap = [];
for (i = 0, j = 0; j < a.length; j++, i += 3) {
Markers[i] = [[a[j][0], a[j][1]], {icon: "shovelIcon"}];
Markers[i + 1] = [[a[j][0], a[j][1]], {icon: "diggingIcon"}];
Markers[i + 2] = [[a[j][0], a[j][1]], {icon: "clickedIcon"}];
mymap.push(Markers[i]);
}
console.log(Markers);
推荐阅读
- javascript - 如何在除某些选项卡之外的所有选项卡中运行此脚本?
- java - pop() 功能如何在 Java 的堆栈中工作?
- php - Mailchimp 批处理调用返回 0 总操作
- c# - 数据未立即保存
- java - 无法使用 Selenium + Java 定位类跨度元素
- csv - 使用 Windows CMD 计算每行的字符数
- c - 是否可以强制 GCC 在没有内联汇编的情况下输出我给它的确切位指令?
- java - CORS 允许以管理员身份登录,但不允许 put 请求
- javascript - java web应用程序生成的html页面上所有已部署图像的“访问被拒绝”javascript错误
- docker - Docker 容器 IP 被公司防火墙阻止