如何使用javascript访问函数中传递的对象参数? 我想动态使用各种column_name。 feature.attribute具有列名称。我想将 feature.attribute 与列名连接起来。到目前为止,我已经尝试过:
我的代码:
var column_name = "LOCAL_POP";
var initialize = {
init_style: function() {
style = new OpenLayers.StyleMap({
"default": new OpenLayers.Style(
{
fillColor: "${getColor}",
strokeColor: "#00FF01",
fillOpacity: 0.7,
graphicZIndex: 1,
label: "${DISTRICT}"
},
{
context: {
getColor: function(feature) {
**// tested by creating a local variable and window variable**
this.feature = feature;
var feature_name = 'feature.attributes.' + column_name;
console.log(window);
console.log(this['feature_name']);
console.log(window['feature_name']);
return feature_name > 1000000 ? '#006D2C' :
feature_name > 100000 ? '#31A354' :
feature_name > 5000 ? '#74C476' :
feature_name >= 0 ? '#A1D99B' :
'';
}
}
}),
"select": new OpenLayers.Style(
{
strokeColor: "#00FF01",
fillOpacity: 0.7
})
});
return style;
}
};
答案 0 :(得分:2)
您的财产访问权限错误。要动态访问对象的属性,请使用不带引号的方括号表示法(使其成为字符串而不是您想要的变量):
feature.attributes[column_name]
这是您的固定代码:
var column_name = "LOCAL_POP";
var initialize = {
init_style: function() {
style = new OpenLayers.StyleMap({
"default": new OpenLayers.Style(
{
fillColor: "${getColor}",
strokeColor: "#00FF01",
fillOpacity: 0.7,
graphicZIndex: 1,
label: "${DISTRICT}"
},
{
context: {
getColor: function(feature) {
**// tested by creating a local variable and window variable**
this.feature = feature;
var feature_name = feature.attributes[column_name];
return feature_name > 1000000 ? '#006D2C' :
feature_name > 100000 ? '#31A354' :
feature_name > 5000 ? '#74C476' :
feature_name >= 0 ? '#A1D99B' :
'';
}
}
}),
"select": new OpenLayers.Style(
{
strokeColor: "#00FF01",
fillOpacity: 0.7
})
});
return style;
}
};