在javascript中将元素添加到关联数组中

Ric*_*ard 1 javascript jquery loops associative-array

我正在尝试将元素添加到关联数组中,colors = [] 我想让它拥有["id":selected_color]但我的浏览器一直在崩溃(某个地方无限循环?)

我不确定我是否正确地将元素添加到数组中.

发生的事情是我点击了一个span元素,它的ID值设置为十六进制值,我正在尝试捕获该值并将其与 selected._color

<script type="text/javascript" src="jquery-1.6.2.js"></script>
<script type="text/javascript">

var selected_color = "";
var colors = [];

$(document).ready(function() {
    $(".color_cell").click(function(){
        // ADD MY COLOR TO SELECTED COLOR'S ASSOCIATIVE ARRAY       
        colors[$(this).attr("id")] = selected_color;
        console.log($(this).attr("id"));
        $(this).css({'background-color':'white'});
        $(this).unbind('click');
        updateDisplay(colors);
        alert("hi");
    });

    $(".btnColor").click(function(){
         // MAKE SELECTED COLOR BE ME
        alert("hey");
        selected_color = $(this).attr("id");
    }); // end button handler
}); // end ready()

function updateDisplay(colors) {
    jQuery.each(colors, function(key, value) {
        //it seems to crash here...
        $("#storage_display").html("var "+$("#storage_display").html()+" " +value);
    });
};
</script>
Run Code Online (Sandbox Code Playgroud)

Joh*_*een 7

您将颜色定义为数组而不是对象.

您只需要正确初始化它:

 var colors = {}; // or new Object();
Run Code Online (Sandbox Code Playgroud)

附加建议......这里真的不需要jQuery.each.迭代像这样的关联数组(让我们不要争论你是否可以实际称之为关联数组的语义)如下所示:

function updateColors(colors)
{
    for (var key in colors)
    {
        $("#storage_display").html("var "+$("#storage_display").html()+" " +colors[key]);
    }
}
Run Code Online (Sandbox Code Playgroud)