我在函数的顶部定义了一个变量,而JSON对象直接在该变量下面引用该变量。一个单击事件,几个循环和一个匿名函数之后,我更新了第一个变量的值,然后引用JSON对象的属性,希望它具有新值,但这不起作用。
我的代码看起来像这样:
var errorval = "Not set";
var rules = {
firstRule : {
name : 'example',
message : 'Needs to be '+errorval+' characters long'
}
}
$('.button').on('click', function(){
for(var foo in bar) {
$.each(foo, function(){
errorval = 3;
// ALERTS "Needs to be Not set characters long"
alert(rules.firstRule.message);
});
}
});因此,我想知道如何在代码中更新errorval,以便rules对象在message属性中具有新的值。
发布于 2012-11-12 03:47:47
这可能会解决你的问题
var errorval = "Not set";
var rules = {
firstRule : {
name : 'example',
getMessage : function() {
return 'Needs to be '+errorval+' characters long';
}
}
}
$('.button').on('click', function(){
for(var foo in bar) {
$.each(foo, function(){
errorval = 3;
// ALERTS "Needs to be Not set characters long"
alert(rules.firstRule.getMessage());
});
}
});调用getMessage方法而不是字符串属性,该方法根据errorval的当前值返回一个字符串
发布于 2012-11-12 03:57:35
这是另一个解决方案,请阅读评论:
var errorval = "Not set";
set(errorval);
$('.button').on('click', function(){
//for(var foo in bar) {
// $.each(foo, function(){
errorval = 3;
// you must recall set(errorval) at here for uodate rules object
alert(rules.firstRule.message);
// });
//}
});
function set(errorval){
rules = {
firstRule : {
name : 'example',
message : 'Needs to be '+errorval+' characters long'
}
}
}https://stackoverflow.com/questions/13334720
复制相似问题