我收到了这个
未捕获的SyntaxError:意外的标识符错误
,为什么?我想我已经正确使用了语法?
// I've revised it
var json;
json = '{"1438905600":0,"1438992000":0}';
setTimeout( $('#example-heatmap').each(function() {
if( json != null ){
var obj = $.parseJSON(json);
var now = new Date();
new CalHeatMap().init({
data: obj,
start: new Date(2016, 0),
cellSize: 11,
range: 9,
domain: 'month',
domainLabelFormat: '%Y-%m',
itemSelector: '#example-heatmap',
legend: [1, 3, 5, 7],
legendColors: {
min: '#efefef',
max: 'steelblue',
empty: '#efefef'
},
tooltip: true
//start: new Date(now.getFullYear(), now.getMonth() - 9)
});
} else {
setTimeout( arguments.callee, 100 );
}
}));
答案 0 :(得分:1)
我认为您的.replace()
不正确。
var tmp = content.replace('<![CDATA[').replace(']]>');
.replace()
期望在W3Schools上提供searchvalue
和newvalue
string.replace(searchvalue,newvalue)
答案 1 :(得分:0)
您正在将jQuery#each
的电话传递给setTimeout
,但setTimeout
需要一个包含JavaScript代码块的函数或字符串。 jQuery#each
均未返回。
返回的值正在转换为字符串[object Object]
,这就是导致语法错误的原因。
要解决此问题,请创建一个lambda函数以包含对jQuery#each
的调用:
setTimeout(function() {
$('#example-heatmap').each(function() {
if (json != null) {
var obj = $.parseJSON(json);
var now = new Date();
new CalHeatMap().init({
data: obj,
start: new Date(2016, 0),
cellSize: 11,
range: 9,
domain: 'month',
domainLabelFormat: '%Y-%m',
itemSelector: '#example-heatmap',
legend: [1, 3, 5, 7],
legendColors: {
min: '#efefef',
max: 'steelblue',
empty: '#efefef'
},
tooltip: true
//start: new Date(now.getFullYear(), now.getMonth() - 9)
});
} else {
setTimeout(arguments.callee, 100);
}
});
});
但是,我必须说,你所做的事看起来非常黑客。您正在使用arguments.callee
,现在已弃用,显然是在尝试“等待”异步操作。您应该使用回调或承诺正确处理异步。