我从php文件生成一些javascript。在这个生成的代码中,我创建了一个多维数组,然后填充它。第一个嵌套数组填充没有问题,但第二个抛出了一个TypeError:myArray [idx]未定义。
以下是代码段:
function initialize() {
var arrayLabels = [];
var arrayMarkers = [];
var idx = 0;
arrayMarkers[idx] = [];
var mapLatlng = new google.maps.LatLng(40.6029248937, 7.7861327300);
var mapOptions = { center: mapLatlng,
zoom: 13,
mapTypeId: google.maps.MapTypeId.SATELLITE };
var map = new google.maps.Map(document.getElementById("karte"), mapOptions);
var bounds = new google.maps.LatLngBounds();
arrayMarkers[idx]['breite'] = 44.4114053473682;
arrayMarkers[idx]['laenge'] = 8.91858100891113;
arrayMarkers[idx]['farbe'] = "http://new.kfb.localhost:8888/img/ico/button2_gruen.png";
arrayMarkers[idx]['hafen'] = "Ab/bis Genua";
arrayMarkers[idx]['link'] = "Karte, Wetter und<br>Landausflüge für<br><a href='hafen.php?hafen=172'>Genua</a><br>Sa, 16.03.13";
idx++;
arrayMarkers[idx]['breite'] = 43.3449053146323;
在索引递增后立即在最后一行抛出错误。任何想法是什么问题?
由于 MK
答案 0 :(得分:5)
您正在递增idx
,然后执行此操作:
arrayMarkers[idx]['breite'] = 43.3449053146323;
您永远不会在arrayMarkers[idx]
放置任何对象,因此您最终会尝试向undefined
添加属性,从而导致错误。
如果要在新索引处创建数组,请添加此处显示的第二行:
idx++;
arrayMarkers[idx] = []; // <=== Add this
arrayMarkers[idx]['breite'] = 43.3449053146323;
附注:您放入arrayMarkers[idx]
的内容是数组([]
),但您不是将它们用作数组,而是将它们用作对象。您可以在JavaScript中执行此操作(因为那些数组aren't really arrays at all),但除非您打算使用它们是数组的事实,否则我只使用对象:
arrayMarkers[idx] = {}; // Instead of []
答案 1 :(得分:0)
idx++;
arrayMarkers[idx]['breite'] = 43.3449053146323;
应该是
arrayMarkers[idx]['breite'] = 43.3449053146323;
idx++;
以便在所有操作完成后移动到下一个索引。使用它们否则将值增加到下一个不存在的索引
或者如果它必须保持相同的方式,那么你可以初始化该值,如
idx++;
arrayMarkers[idx] = [];
arrayMarkers[idx]['breite'] = 43.3449053146323;