Javascript变量不可访问

Javascript变量不可访问,javascript,jquery,Javascript,Jquery,我有一个在单击时触发的函数(使用jQuery) 我不明白为什么下面的代码不起作用,并且显示未定义 HTML: 如何访问event.data.category FIDDLE:要访问嵌套对象属性,请使用[]符号,例如: event['data']['category'] 要访问嵌套对象属性,请使用[]符号,例如: event['data']['category'] event.data是小提琴中的一个字符串 这是因为数据测试字段中的JSON无效。 因此,在解析异常处理程序时将其传递给异常处理

我有一个在单击时触发的函数(使用jQuery)

我不明白为什么下面的代码不起作用,并且显示未定义

HTML:


如何访问event.data.category


FIDDLE:

要访问嵌套对象属性,请使用
[]
符号,例如:

event['data']['category']

要访问嵌套对象属性,请使用
[]
符号,例如:

event['data']['category']

event.data
是小提琴中的一个字符串

这是因为
数据测试
字段中的JSON无效。 因此,在解析异常处理程序时将其传递给异常处理程序,并使用字符串本身

(看起来你不能在JSON中使用单引号,根据)

正如其他地方指出的,可以在数据属性中使用双引号来修复问题


请注意,
data[category]
无论如何都不会工作,因此您仍然会得到
未定义的

事件。数据是小提琴中的字符串

'use strict';

var event = {data:{
     category: 'CCC', 
     action:'AAA', 
     label: 'LLL'
}};


var testFunc = function(event) {
    var data = event['data'];
    var category = event['data']['category'];


    console.debug(data);
    console.debug(category);

    //get keys for every data entry
    Object.keys(data).forEach(function(key){
        console.log(key, data[key]);
    });
};

testFunc(event);
这是因为
数据测试
字段中的JSON无效。 因此,在解析异常处理程序时将其传递给异常处理程序,并使用字符串本身

(看起来你不能在JSON中使用单引号,根据)

正如其他地方指出的,可以在数据属性中使用双引号来修复问题

请注意,
data[category]
无论如何都不会工作,因此您仍然会得到
未定义的

'use strict';

var event = {data:{
     category: 'CCC', 
     action:'AAA', 
     label: 'LLL'
}};


var testFunc = function(event) {
    var data = event['data'];
    var category = event['data']['category'];


    console.debug(data);
    console.debug(category);

    //get keys for every data entry
    Object.keys(data).forEach(function(key){
        console.log(key, data[key]);
    });
};

testFunc(event);

您需要有一个有效的JSON对象,因此需要使用JSON符号访问它


您需要有一个有效的JSON对象,因此需要使用JSON表示法访问它。

您的JSON数据格式不正确。您需要对键值使用双引号

<a href="about:blank" target="_blank" class="test" data-test='{"category": "CCC", "action": "AAA", "label": "LLL"}'>click event triggered here</a>

您的JSON数据格式不正确。您需要对键值使用双引号

<a href="about:blank" target="_blank" class="test" data-test='{"category": "CCC", "action": "AAA", "label": "LLL"}'>click event triggered here</a>


你能在小提琴中重编吗?数据的
类型是什么?数据是一个普通对象,还是一个实现toString的不同结构?@tymeJV是的,添加到问题中你能在小提琴中重编吗?数据的
类型是什么?数据是一个普通对象,还是一个实现toString的不同结构?@tymeJV是的,问题补充:没有理由必须使用括号符号而不是点符号,除非变量名称中有空格。没有理由必须使用括号符号而不是点符号,除非变量名称中有空格!通过更改引号解决了这个问题,如
datatest='{“json”:“val”}
Tricky!通过更改引号解决了这个问题,比如
datatest='{“json”:“val”}
I向我的帖子发了一封邮件。