Jquery 我的数组未定义
我有以下问题代码是进一步向下。 当我这样做的时候Jquery 我的数组未定义,jquery,html,arrays,leaflet,Jquery,Html,Arrays,Leaflet,我有以下问题代码是进一步向下。 当我这样做的时候 city[i] = response[i].name; 我可以打印出每个城市的名字。但是现在我想要一个多维数组,因为我想保存下面的代码 L.marker([response[i].lat, response[i].lon]).bindPopup(response[i].name); 我想我可以把它保存在一个多维数组中,所以我们举个例子 city[1]["CityName"] = "New York" city[1]["Locations"]
city[i] = response[i].name;
我可以打印出每个城市的名字。但是现在我想要一个多维数组,因为我想保存下面的代码
L.marker([response[i].lat, response[i].lon]).bindPopup(response[i].name);
我想我可以把它保存在一个多维数组中,所以我们举个例子
city[1]["CityName"] = "New York"
city[1]["Locations"] = L.marker([location]).bindPopup(name);
所以,现在当我打电话给城市[1]['Locations']时,我得到了L.标记,对吗
这是我的密码
function init()
{
region = 'all';
var url = "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
attribution = "(c) OSM contributors, ODBL";
var minimal = L.tileLayer(url, {styleID: 22677, attribution: attribution});
$.ajax
({
type: 'GET',
url: 'webservice.php',
data: {region: region},
success: function(response, textStatus, XMLHttpRequest)
{
var city = new Array();
var lygStr = '';
for(var i = 0; i < response.length; i++)
{
//alert(response[i].lat + " | " + response[i].lon + " | " + response[i].name);
alert(response[i].name);
city[i]["CityName"] = response[i].name;
//L.marker([response[i].lat, response[i].lon]).bindPopup(response[i].name);
if(i + 1 == response.length)
{
lygStr += city[i]["CityName"];
}
else
{
lygStr += city[i]["CityName"] + ", ";
}
}
alert("Test" + lygStr);
var cities = L.layerGroup([lygStr]);
map = L.map("map1",
{
center: new L.Latlng(resposne[1].lat, response[0].lon),
zoom: 10,
layers: [minimal, cities]
});
}
});
}
函数init()
{
区域='所有';
var url=“http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png”,
属性=“(c)OSM贡献者,ODBL”;
var minimal=L.tileLayer(url,{styleID:22677,attribute:attribute});
$.ajax
({
键入:“GET”,
url:'webservice.php',
数据:{region:region},
成功:函数(响应、textStatus、XMLHttpRequest)
{
var city=新数组();
var lygStr='';
对于(变量i=0;i
正确的初始化将解决此问题-您需要将位于城市[i]
位置的对象初始化为保存您的值而不是未定义的对象
var city = []; // don't use new Array() !
var lygStr = '';
for(var i = 0; i < response.length; i++)
{
city[i] = {}; // you need to create an object here
city[i]["CityName"] = response[i].name;
在声明城市[i]之前,您将其用作数组:
var city = []; // don't use the new Array(); syntax
var lygStr = '';
for(var i = 0; i < response.length; i++) {
// before using city[i] as an array, you must declare it as an array
city[i] = [];
city[i]["CityName"] = response[i].name;
...
var city=[];//不要使用新数组();语法
var lygStr='';
对于(变量i=0;i
在这行中看起来像:
city[1]["Locations"] = L.marker([location]).bindPopup(name);
您的城市[1][“位置”]
将设置为。bindPopup(名称)
返回的任何值。这可能是未定义的,也可能是函数。该方法构造为返回其调用的对象吗?仅此而已:
city[1]["Locations"] = L.marker([location]);
city[1]["Locations"].bindPopup(name);
你说的city[i]=[]是什么意思?当我还是这么说,但在数组中,正如你说的,我仍然在这行中得到一个错误city[i][“CityName”]=response[i].name;
@devShuba这是一个拼写错误,你需要一个对象{}
,而不是一个数组[]
。这是一个简单的初始化问题;)实际上这里应该使用对象而不是数组。是的,但显然是错误的。数组有数字索引。此代码意外工作,因为您可以将属性附加到数组对象。请尝试以下代码:city=[];city[“foo”]=“bar”;alert(city.length)//0,meeep
。
city[1]["Locations"] = L.marker([location]);
city[1]["Locations"].bindPopup(name);