将范围列表转换为平面列表

时间:2014-04-01 20:42:43

标签: javascript jquery list function

我正在尝试将一个以范围(1-2 =蓝色,2-3 =红色等)开头的Legend列表的结构更改为一个单词的平面列表(" blah&#34 ; =蓝色,"偷看" =红色)。

我遇到的问题是我需要找到一种方法来保持数字系统的位置,同时用文本替换该含义。而且,我需要相应的颜色在文本旁边,如此......

(color)text<br>
(color)text<br>
(color)text

设置的是(这决定了颜色)

function getColor(d) {
    return d === 5 ? '#3e9936' :
    d === 4  ? '#9dcc00' :
    d === 3  ? '#f7ef00' :
    d === 2  ? '#ed5d13' :
    d === 1  ? '#ba212a' :
               '#a1a1a1';
}

这是将在地图上显示并确定结构的内容

legend.onAdd = function (map) {

    var div = L.DomUtil.create('div', 'info legend'),
        grades = [1,2, 3, 4, 5],
        labels = ["Pro-LEED","LEED-equivalent","No State-level","Anti-LEED","Anti-LEED Pending"],
        from, to;

    for (var i = "Pro-LEED"; i === labels.length; i++) {
        from = labels[i];
        to = labels[i];

        grades.push(
            '<i style="background:' + getColor(to + '"Pro-LEED"') + '"></i> ' +
            (/*only to check*/to ? to : 'br') +
            ((/*both to and from check*/from)?'':'') + 
            (/*only from check*/from ? from : '+'));
    }
    div.innerHTML = labels.join('<br>');
    return div;
};

现在我得到的只是一个文本列表而不是每个单词旁边的颜色。

帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用哈希数组并直接查找值,而无需使用函数:

var myData = [];
myData["Pro-LEED"] = "#3e9936";

...则...

'<i style="background:' + myData["Pro-LEED"] + '"></i> '