Javascript 为什么';我的代码不会附加到循环中的字符串吗?
我使用jQuery,通过循环构建一个表。我认为最好的方法是创建一个数组,然后执行Javascript 为什么';我的代码不会附加到循环中的字符串吗?,javascript,jquery,arrays,loops,Javascript,Jquery,Arrays,Loops,我使用jQuery,通过循环构建一个表。我认为最好的方法是创建一个数组,然后执行$(blah).html(table) 这里的主要问题 每次你说“var设置_表”,你都会给变量加上阴影。除去设置表的第一个声明之外的所有声明中的“var”关键字。这里的主要问题 每次你说“var设置_表”,你都会给变量加上阴影。除去设置表的第一个声明之外的所有表上的“var”关键字。要扩展iftrue的答案: 第一次声明变量时,如果未指定“var”,则表明它是一个全局变量 如果使用“var”关键字,则该变量的“作用
$(blah).html(table)代码>
这里的主要问题
每次你说“var设置_表”,你都会给变量加上阴影。除去设置表的第一个声明之外的所有声明中的“var”关键字。这里的主要问题
每次你说“var设置_表”,你都会给变量加上阴影。除去设置表的第一个声明之外的所有表上的“var”关键字。要扩展iftrue的答案:
第一次声明变量时,如果未指定“var”,则表明它是一个全局变量
如果使用“var”关键字,则该变量的“作用域”为该特定函数。这意味着它的数据只能由该函数中的代码访问。这意味着函数之外的任何东西都无法访问该变量。另一个函数可以用相同的名称定义相同的变量,并且可以存储完全不同的值
$.each(settings, function(i, val){
var settings_table = settings_table+'<put stuff in it>';
});
$。每个(设置、功能(i、val){
var设置\表=设置\表+“”;
});
这里的技巧是定义一个新的匿名函数供迭代器使用。此功能有自己的范围(它自己的个人数据)。这意味着,通过声明“var settings_table”,您就是在说“创建一个全新的变量,特定于此函数”。因此,实际上您所做的是将表数据分配给一个全新的变量,然后在循环的下一次迭代中丢失数据。如果我们将其改写为:
function BuildTable(i, val){
var settings_table = settings_table+'<put stuff in it>';
}
$.each(settings, BuildTable);
函数构建表(i,val){
var设置\表=设置\表+“”;
}
$。每个(设置,构建表);
你真正想做的是一些有点棘手的事情,这叫做“结束”。闭包是一个高级javascript主题。但是,在本质上,你所做的是说“嘿,我想让这个匿名函数访问我的个人数据”
在您的情况下,您要做的是:
var settings_table = '<open the table>';
$.each(settings, function(i, val){
settings_table = settings_table+'<put stuff in it>';
});
settings_table = settings_table+'<close it>';
$('#rscc_opts').html(settings_table);
var设置\u表=“”;
$。每个(设置、功能(i、val){
设置表=设置表+“”;
});
设置表=设置表+“”;
$('rscc_opts').html(设置表);
展开iftrue的回答:
第一次声明变量时,如果未指定“var”,则表明它是一个全局变量
如果使用“var”关键字,则该变量的“作用域”为该特定函数。这意味着它的数据只能由该函数中的代码访问。这意味着函数之外的任何东西都无法访问该变量。另一个函数可以用相同的名称定义相同的变量,并且可以存储完全不同的值
$.each(settings, function(i, val){
var settings_table = settings_table+'<put stuff in it>';
});
$。每个(设置、功能(i、val){
var设置\表=设置\表+“”;
});
这里的技巧是定义一个新的匿名函数供迭代器使用。此功能有自己的范围(它自己的个人数据)。这意味着,通过声明“var settings_table”,您就是在说“创建一个全新的变量,特定于此函数”。因此,实际上您所做的是将表数据分配给一个全新的变量,然后在循环的下一次迭代中丢失数据。如果我们将其改写为:
function BuildTable(i, val){
var settings_table = settings_table+'<put stuff in it>';
}
$.each(settings, BuildTable);
函数构建表(i,val){
var设置\表=设置\表+“”;
}
$。每个(设置,构建表);
你真正想做的是一些有点棘手的事情,这叫做“结束”。闭包是一个高级javascript主题。但是,在本质上,你所做的是说“嘿,我想让这个匿名函数访问我的个人数据”
在您的情况下,您要做的是:
var settings_table = '<open the table>';
$.each(settings, function(i, val){
settings_table = settings_table+'<put stuff in it>';
});
settings_table = settings_table+'<close it>';
$('#rscc_opts').html(settings_table);
var设置\u表=“”;
$。每个(设置、功能(i、val){
设置表=设置表+“”;
});
设置表=设置表+“”;
$('rscc_opts').html(设置表);
谢谢。不知道它会覆盖它。我认为它可能会像PHP一样工作。@Ben,这很棘手,因为即使代码看起来与您在PHP中所做的类似,但实际上完全不同。在PHP中,您所做的事情更类似于for(inti=0;i设置\u表将外部设置隐藏起来。我只是想解释一下,仅仅出现var
(比如在块中)并不能声明变量;变量总是为函数执行声明一次;)非常感谢。不知道它会覆盖它。我认为它可能会像PHP一样工作。@Ben,这很棘手,因为即使代码看起来与您在PHP中所做的类似,但实际上完全不同。在PHP中,您所做的事情更类似于for(inti=0;i