Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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不';t退出并不断更新getElementsByTagName变量_Javascript - Fatal编程技术网

循环的Javascript不';t退出并不断更新getElementsByTagName变量

循环的Javascript不';t退出并不断更新getElementsByTagName变量,javascript,Javascript,我有一个简单的javascript代码片段 函数foo(){ bar(); } 功能条(){ var tags=document.getElementsByTagName('example'); 对于(var i=0;i

我有一个简单的javascript代码片段

函数foo(){
bar();
}
功能条(){
var tags=document.getElementsByTagName('example');
对于(var i=0;i

及其同级DOM方法返回元素的实时HTMLCollection,这意味着如果添加了与查询匹配的新元素,则包含对HTMLCollection引用的变量将被更新。你应该:

a) 用于“分离”集合:

var tags = Array.from(document.getElementsByTagName('element'));
或者,如果您没有可用的
Array.from
,则可以使用
Array.prototype.slice

var tags = Array.prototype.slice.call(document.getElementsByTagName('a'), 0)
b) 不添加与正在迭代的查询匹配的元素(这将创建一个无限循环)


这也是为什么建议您在
for
循环中迭代一组元素时,在迭代之前捕获列表的长度,并将其用作循环边界:

var tags = document.getElementsByTagName('example');
var length = tags.length;

for (var i = 0; i < length; i++) {
   // won't be infinite
   document.createElement('example');
   ...
}
var tags=document.getElementsByTagName('example');
变量长度=tags.length;
对于(变量i=0;i
及其同级DOM方法返回元素的实时HTMLCollection,这意味着如果添加了与查询匹配的新元素,则包含对HTMLCollection引用的变量将被更新。你应该:

a) 用于“分离”集合:

var tags = Array.from(document.getElementsByTagName('element'));
或者,如果您没有可用的
Array.from
,则可以使用
Array.prototype.slice

var tags = Array.prototype.slice.call(document.getElementsByTagName('a'), 0)
b) 不添加与正在迭代的查询匹配的元素(这将创建一个无限循环)


这也是为什么建议您在
for
循环中迭代一组元素时,在迭代之前捕获列表的长度,并将其用作循环边界:

var tags = document.getElementsByTagName('example');
var length = tags.length;

for (var i = 0; i < length; i++) {
   // won't be infinite
   document.createElement('example');
   ...
}
var tags=document.getElementsByTagName('example');
变量长度=tags.length;
对于(变量i=0;i