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

标签 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>

最佳答案

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

你只需要正确地初始化它:

 var colors = {}; // or new Object();

其他建议...这里真的不需要 jQuery.each。像这样迭代一个关联数组(我们不要争论你是否真的可以称它为关联数组的语义)看起来像这样:

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

关于javascript - 在javascript中将元素添加到关联数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7004304/

相关文章:

JavaScript/jQuery 如何向用户显示正则表达式?

r - 向量化更改矩阵列的 for 循环

jquery - 对函数参数进行循环

javascript - 在 Angular 或 js 中分割数组

javascript - 禁用链接的默认行为

javascript - 使用 jQuery 制作表单动画

带有关闭按钮和动画的 jQuery 工具提示,淡入淡出

java - 如果存在比较值,则阻止树集删除索引?

php - 如何确保页脚在打印时始终位于最后一页的底部?

javascript - tiptap prosemirror 应该仅可编辑特定节点