Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么';我的代码不会附加到循环中的字符串吗?_Javascript_Jquery_Arrays_Loops - Fatal编程技术网

Javascript 为什么';我的代码不会附加到循环中的字符串吗?

Javascript 为什么';我的代码不会附加到循环中的字符串吗?,javascript,jquery,arrays,loops,Javascript,Jquery,Arrays,Loops,我使用jQuery,通过循环构建一个表。我认为最好的方法是创建一个数组,然后执行$(blah).html(table) 这里的主要问题 每次你说“var设置_表”,你都会给变量加上阴影。除去设置表的第一个声明之外的所有声明中的“var”关键字。这里的主要问题 每次你说“var设置_表”,你都会给变量加上阴影。除去设置表的第一个声明之外的所有表上的“var”关键字。要扩展iftrue的答案: 第一次声明变量时,如果未指定“var”,则表明它是一个全局变量 如果使用“var”关键字,则该变量的“作用

我使用jQuery,通过循环构建一个表。我认为最好的方法是创建一个数组,然后执行
$(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