应该是未定义的jQuery对象

时间:2013-05-22 12:46:39

标签: javascript jquery arrays

我正在尝试使用jQuery更改背景的颜色。我已经制作了一个带有颜色名称及其值的数组。

如果我这样做

console.log(colorValue);

当我这样做时,我得到了我想用来找到相应颜色的类名

console.log(colorArr.colorValue);

我得到一个未定义的,但当我做

console.log(colorArr.red);

我得到相应的颜色:

function colorChange(){
    $('div.colorpicker ul li a').on('click', function() {
        var colorArr = {'greenyellow': '#d2db46', 'lightgreen': '#8dc13f', 'darkgreen': '#56a174', 'blauw' : '#3199d1', 'darkblue':'#326b9b', 'darkpurple':'#584586' , 'purple':'#985494', 'red':'#ca4538', 'orange' : '#e27a37', 'darkyellow': '#f8c040', 'lightyellow': '#e4de42'};
        var changeBackground = $('div.header_blue, div.reactie, section#adres, section#referenties_single div.pager');
        var changeColor = $('section#tevredenklanten h1, section#referenties_single h2.klant, section#referenties_single .wat_gedaan h2');
        var colorValue = $(this).attr('class');
        console.log(colorValue);
        //console.log(colorArr);
        console.log(colorArr.colorValue);
        //console.log(colorArr.red);
        changeBackground.animate({backgroundColor:colorArr.colorValue}, 600);
    });
}

有谁知道我必须做什么?

3 个答案:

答案 0 :(得分:4)

由于colorValue不是对象键,但它包含要查找的键,因此您需要使用[]表示法而不是.表示法

console.log(colorArr[colorValue]);

当您说colorArr.colorValue时,它会在对象colorValue中查找名为colorArr的密钥,该密钥不存在,因此会返回undefined

答案 1 :(得分:1)

当属性名称存储在另一个变量中时,使用括号表示法访问对象:

colorArr[ colorValue ]

使用点符号时,JavaScript会搜索名称为“colorValue”的属性,该属性不存在,因此会返回undefined

答案 2 :(得分:0)

尝试以下代码

colorArr[ colorValue ]

我们可以通过传递密钥

来访问对象值
colorArr["greenyellow"]= it yields the corresponding result.