如何使用属性获取JSON值?

时间:2011-07-13 11:40:20

标签: javascript jquery json

我有一个'rel'属性的链接:

<a href="#" rel="music">Click</a>
<p></p>

我有一个包含JSON的变量:

var myStyle = {
"music": { "band": "Beatles", "type": "Rock"},
    "movie": { "title" "Shrek", "type": "Kids"}
};

我想使用jQuery根据'rel'属性从JSON获取值:

$('a').click(function() {
      var whatLink = $('a').attr('rel');
    $('p').text(myStyle.whatLink.band);
});

我看到“样式”的值是“音乐”,但点击链接的结果是

  

TypeError:无法读取未定义

的属性'band'

甚至可能吗?

3 个答案:

答案 0 :(得分:3)

尝试

$('a').click(function() {
      var whatLink = $('a').attr('rel');
    $('p').text(myStyle[whatLink].band);
});

使用变量访问属性时,点运算符不起作用,您必须使用字典/数组运算符

答案 1 :(得分:1)

  

TypeError:无法读取未定义

的属性'band'

这是因为whatLink不存在myStyle属性,因此返回undefined,当然没有band属性。

使用括号表示法

$('a').click(function() {
      var whatLink = $('a').attr('rel');
    $('p').text(myStyle[whatLink].band);
});

...否则whatLink按字面意思理解。

答案 2 :(得分:1)

如果您正在使用......

$('a').click(function() {
      var whatLink = $('a').attr('rel');
    $('p').text(myStyle[whatLink].band);
});

... whatLink总是会在页面中显示最后一个(或第一个,不记得)rel的{​​{1}}值。要真正检查您刚刚点击的链接的a值,请在事件内的选择器中使用rel代替this。像这样......

'a'