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)
您将颜色定义为数组而不是对象.
您只需要正确初始化它:
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)