如何使用属性来获取JSON值

How do I use an attribute to get a JSON value?

本文关键字:JSON 获取 何使用 属性      更新时间:2023-09-26

我有一个带有'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);
});

我看到style的值是music,但是点击链接的结果是

TypeError: Cannot read property 'band' of undefined

这可能吗?

Try

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

当使用变量访问属性时,点操作符不起作用,你必须使用字典/数组操作符

如果您使用…

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

whatLink总是会给出页面中最后一个(或者第一个,不记得了)arel值。要真正检查您刚刚单击的链接的rel值,请在事件内部的选择器中使用this而不是'a'。像这样…

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

TypeError: Cannot read property 'band' of undefined

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

使用括号符号…

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