【发布时间】:2014-04-03 17:22:28
【问题描述】:
当 cookie $.cookie('chk_ar') 未定义时,我有以下 jQuery 函数抛出 Uncaught SyntaxError: Unexpected token u。
function checkBgNoise() {
// check background noise option state,
// if true, click 'on' to activate
// then add classes and check checkboxes
if( $.cookie('bg-noise-state') === 'true' ) {
$('#bg-noise-on').trigger('click');
// check for bg-noise array cookie
var chk_ar = $.cookie('chk_ar');
// convert string to object
chk_ar = $.parseJSON(chk_ar);
// loop through and apply checks to matching sets
$.each(chk_ar, function(index, value) {
// add bg-noise class for activated areas
$('.' + value).addClass('bg-noise');
// check those areas
$('input').filter('[data-at="'+value+'"]').prop('checked', true);
});
} else if ( $.cookie('bg-noise-state') === 'false' ) {
// remove classes when selecting 'off'
var chk_ar = $.cookie('chk_ar');
chk_ar = $.parseJSON(chk_ar);
$.each(chk_ar, function(index, value) {
// remove bg-noise added on toggling off noise
$('.' + value).removeClass('bg-noise');
// uncheck the boxes
$('input').filter('[data-at="'+value+'"]').prop('checked', false);
});
};
}; // end function checkBgNoise
我仍在学习 javascript 技巧,因此我的方法完全有可能存在一些相当明显的错误。该代码通常可以正常运行,但如果可能,我想摆脱该错误。
在 Stack Exchange 和 Google 上搜索错误代码表明问题出在对 $.parseJSON(chk_ar) 的调用中,该调用有时未定义。关于如何解决这个问题的任何想法?一个简单的if 声明?
【问题讨论】:
-
if (chk_ar == "undefined") return; -
谢谢@Archer。原谅我的无知,但那会去哪里呢?在每个
if statement的最后? -
每次尝试将值分配给
chk_ar时将其直接放在后面。我认为如果它是未定义的,那么继续下去是没有意义的,所以它只会退出。 -
嗯...这不起作用。我已经在多个地方应用了它,但没有雪茄。我还尝试将
checkBgNoise函数的内部代码封装在if (($.cookie('chk_ar')) != "undefined")中,但这也不起作用。也许不可能嵌套 if 语句? (似乎不太可能。) -
我们都从某个地方开始。似乎不久前我还在输入
10 PRINT "John is cool"20 GOTO 10。不过,由于衰老,这似乎不是很久以前 - 那是 30 多年前:p
标签: javascript jquery json cookies