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