我有一个动态生成的对象,看起来像这样:
colorArray = {
AR: "#8BBDE1",
AU: "#135D9E",
AT: "#8BBDE1",
... }
我试图用它通过对颜色的地图这个插件调用插件期间和“颜色”属性。 像这样:
$('#iniDensityMap').vectorMap({
backgroundColor: '#c2e2f2',
colors: colorArray,
... (some other params)
});
不过,这并不在国家的颜色。 当我硬编码在此,它工作正常 - 但它必须为这个项目是动态生成的,所以这样的事情会不会为我工作(尽管它其实颜色在地图一样):
$('#iniDensityMap').vectorMap({
backgroundColor: '#c2e2f2',
colors: { AR: "#8BBDE1", AU: "#135D9E", AT: "#8BBDE1" },
... (some other params)
});
我追踪的问题远远不够到插件找到它有事情做与此循环:
setColors: function(key, color) {
if (typeof key == 'string') {
this.countries[key].setFill(color);
} else {
var colors = key; //This is the parameter passed through to the plugin
for (var code in colors) {
//THIS WILL NOT GET CALLED
if (this.countries[code]) {
this.countries[code].setFill(colors[code]);
}
}
}
},
我也试着通过迭代colorArray
对象对我自己,对插件的外面,我遇到了同样的问题。 无论坐镇内线的for(OBJ中的变种x)的不点火。 我也注意到, colorArray.length
返回undefined。 另外要注意的是,我已经实例化的var colorArray = {};
在一个单独的电话,试图确保其坐在全球范围内,并且能够被操纵。
我想,这个问题可以是:
- 顺便我动态填充对象-
colorArray[cCode] = cColor;
(在一个jQuery。每个呼叫) - 我再次混淆了JavaScript数组()和对象()之间的差异
- 这是一个范围的问题吧?
- 一切上述的一些组合。
编辑#1:我提出我关于在控制台Firebug的对象的其他问题一个新的职位这里 。 这个问题涉及更具体的萤火虫不是底层的JS问题我问这里。
编辑#2:其他信息下面是我使用的是动态填充对象的代码:
function parseDensityMapXML() {
$.ajax({
type: "GET",
url: "media/XML/mapCountryData.xml",
dataType: "xml",
success: function (xml) {
$(xml).find("Country").each(function () {
var cName = $(this).find("Name").text();
var cIniCount = $(this).find("InitiativeCount").text();
var cUrl = $(this).find("SearchURL").text();
var cCode = $(this).find("CountryCode").text();
//Populate the JS Object
iniDensityData[cCode] = { "initiatives": cIniCount, "url": cUrl, "name": cName };
//set colors according to values of initiatives count
colorArray[cCode] = getCountryColor(cIniCount);
});
}
});
} //end function parseDensityMapXML();
然后,这个函数被调用页面上的其他复选框的Click事件。 对象iniDensityData
和colorArray
在HTML文件的头部声明-希望让他们在全球范围内:
<script type="text/javascript">
//Initialize a bunch of variables in the global scope
iniDensityData = {};
colorArray = {};
</script>
最后,这里是从XML文件中的一个片段正在读取:
<?xml version="1.0" encoding="utf-8"?>
<icapCountryData>
<Country>
<Name>Albania</Name>
<CountryCode>AL</CountryCode>
<InitiativeCount>7</InitiativeCount>
<SearchURL>~/advance_search.aspx?search=6</SearchURL>
</Country>
<Country>
<Name>Argentina</Name>
<CountryCode>AR</CountryCode>
<InitiativeCount>15</InitiativeCount>
<SearchURL>~/advance_search.aspx?search=11</SearchURL>
</Country>
... and so on ...
</icapCountryData>