Javascript 从变量访问JSON值

Javascript 从变量访问JSON值,javascript,jquery,json,Javascript,Jquery,Json,单击处理程序正在访问元素上的数据属性,并根据该属性设置变量,在本例中为“option1”。我想使用这个变量的名称来访问JSON对象。但在本例中,它返回“undefined”,好像在寻找一个名为“thispoption”的数组。如何使用此数据属性返回正确的JSON内容 // Note: thisOption returns "option1", which is correct. jq = jQuery; // Pass info jq('.button').click( function()

单击处理程序正在访问元素上的数据属性,并根据该属性设置变量,在本例中为“option1”。我想使用这个变量的名称来访问JSON对象。但在本例中,它返回“undefined”,好像在寻找一个名为“thispoption”的数组。如何使用此数据属性返回正确的JSON内容

// Note: thisOption returns "option1", which is correct.

jq = jQuery;

// Pass info
jq('.button').click( function() {
    var thisOption = jq(this).data('name');
    jq('#subscriptions .price').text(thisOption.monthly);
});

var option1 = {
    "name"      : "Super Pack",
    "monthly"   : "€10",
    "yearly"    : "€100",
    "gift"      : "Free €20 voucher"
};

如果
option1
在全局范围内,则可以使用动态键通过窗口对象访问它:

jq('#subscriptions .price').text(window[thisOption].monthly);

[]
符号允许您使用变量属性或键名。

您可以访问下面的
选项1

jq('#subscriptions .price').text(window[thisOption].monthly);

因为
option1
在全局范围内,所以您可以像
window.option1
一样访问它。当
option1
是某个变量的值时,您应该像
window[thispoption]

一样访问它。我制作了一些结构,以便我们可以清楚地看到它,您也可以在jsfiddle.net中检查它

以下是网址:

HTML


非常好用,太棒了。非常感谢。太好了,谢谢!为什么需要使用窗口对象来访问它?如果
jq(this).data('name')
返回不同的变量名,则只能通过窗口对象(如果它们是全局的)或包含在另一个变量/对象中访问它们。在您接受的答案中,选项1是硬编码的,因此如果您的数据名有选项2,则它将不起作用。谢谢,这是有意义的。正确答案变了。
<a href="#" data-option="monthly" class="button">test</a>
<div id="subscriptions">
    <p class="price"></p>
</div>
var option1 = {
    "name"      : "Super Pack",
    "monthly"   : "€10",
    "yearly"    : "€100",
    "gift"      : "Free €20 voucher"
};

jq = jQuery;

// Pass info
jq('.button').click( function() {
    var thisOption = jq(this).data('option');
    jq('#subscriptions .price').text(option1[thisOption]);    
});