我使用JvectorMap按状态映射运营商以便于编辑json数据如下所示:
{
"states": {
"2015": {
"US-AK": [" Aenta", " Assurant", " ", " ", " ", " ", " "],
"US-AL": [" Aenta", " Assurant", " ", " ", " Goden Rule", " ", " Humana"],
"US-AR": [" Aenta", " Assurant", " ", " ", " ", " ", " "],
"US-AZ": [" Aenta", " ", " ", " ", " Goden Rule", " ", " Humana"],
"US-CA": [" Aenta", " Assurant", " ", " ", " ", " ", " "],
}
}
}
呈现地图的代码是:
$(function(){
$.getJSON('../js/medicalOff.json', function(data){
var val = 2015;
statesValues = jvm.values.apply({}, jvm.values(data.states));
$('#map').vectorMap({
map: 'us_merc_en',
backgroundColor: '#ffffff',
regionStyle: {
initial:{
fill: '#87c9b4',
},
hover:{
fill:'#2e8f70',
},
},
onRegionTipShow: function(e, label, code) {
var str = data.states[val][code];
var trim = str.replace(/(^,)|(,$)/g, "");
label.html('<b>' + label.html() + '</b>' + '<br> ' + trim);
},
});
});
});
在我添加var str = data.states[val][code]; var trim = str.replace(/(^,)|(,$)/g, "");
之前,数据就像Texas: ,,,Assurant,,,Humana
一样。现在我不擅长JavaScript,但我对它有基本的了解。目前我得到了#34; Undefined不是一个功能&#34;错误。实现这一部分的正确方法是什么
var str = data.states[val][code];
var trim = str.replace(/(^,)|(,$)/g, "");
答案 0 :(得分:0)
我假设有错误的行是var trim = str.replace(/(^,)|(,$)/g, "");
。如果我正确地假设那么这意味着str
不是字符串,而是其他一些对象。
在这种情况下,您需要检查&#34;如果它不是字符串,那么str
是什么?&#34;
检查的一种方法是alert(str)
并查看弹出的内容。将警报线直接放在有错误的行之前。
当然alert(str)
与alert(data.states[val][code])
相同。您可以使用alert(JSON.stringify(data.states[val][code]))
或alert(JSON.stringify(data.states[val]))
找到帮助。