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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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 - Fatal编程技术网

循环错误的Javascript

循环错误的Javascript,javascript,jquery,Javascript,Jquery,这就是我所拥有的: function get_bad_changelist_authors() { var changelistAuthorDivs = $('div.bad_changelist_author'); var changelistAuthors = []; for (var div in changelistAuthorDivs) { changelistAuthors.push($(changelistAuthorDivs[div]).text(

这就是我所拥有的:

function get_bad_changelist_authors() {
   var changelistAuthorDivs = $('div.bad_changelist_author');
   var changelistAuthors = [];

   for (var div in changelistAuthorDivs) {
      changelistAuthors.push($(changelistAuthorDivs[div]).text());
   }

   return changelistAuthors;
}

changeListAuthorDivs有n个元素,但由于某种原因,它会迭代n+1次,并在最后一次迭代中将div初始化为字符串(即字符串“length”)。在最后一次迭代中,此循环出现错误。

JavaScript
for…in
循环还将迭代对象的属性(
length
是对象的属性,这就是为什么您最终得到一个包含该字符串的
div
),这不是您想要的。对于循环使用正常的

for(var i = 0; i < changeListAuthorDivs.length; i++) {
   //Do stuff
}
for(var i=0;i
JavaScript
for…in
循环也会迭代对象的属性(
length
是对象的属性,这就是为什么最后会出现一个包含该字符串的
div
),而这不是您想要的。对于
循环使用正常的

for(var i = 0; i < changeListAuthorDivs.length; i++) {
   //Do stuff
}
for(var i=0;i
您似乎正在使用jQuery(请确认)。然后,您可以使用以更简洁的方式实现相同的目标:

function get_bad_changelist_authors() {
   return $('div.bad_changelist_author').map(function() {
        return $(this).text();
   }).get();
}
或者,在处理jQuery对象时使用


一般来说,@James是完全正确的,不要在
中使用
for…来迭代数组()。在这种情况下,必须将jQuery对象视为数组。

您似乎正在使用jQuery(请确认)。然后,您可以使用以更简洁的方式实现相同的目标:

function get_bad_changelist_authors() {
   return $('div.bad_changelist_author').map(function() {
        return $(this).text();
   }).get();
}
或者,在处理jQuery对象时使用

一般来说,@James是完全正确的,不要在
中使用
for…来迭代数组()。在这种情况下,jQuery对象必须像数组一样对待。

试试这个

 for (var div in changelistAuthorDivs) {
     if(Object.prototype.hasOwnProperty.call(changelistAuthorDivs[div], div))
     changelistAuthors.push($(changelistAuthorDivs[div]).text());
  }
试试这个

 for (var div in changelistAuthorDivs) {
     if(Object.prototype.hasOwnProperty.call(changelistAuthorDivs[div], div))
     changelistAuthors.push($(changelistAuthorDivs[div]).text());
  }

是否已尝试使用带有显式索引器的for循环?比如for(var i=0;iWhy not?lol,我只是对div=“length…我发现一个奇怪的概念已经尝试使用带有显式索引器的for循环感到非常困惑?比如for(var i=0;iWhy not?lol,我只是对div=”感到非常困惑。”长度…我发现这是一个奇怪的概念。我想我会尝试一下map函数。谢谢你指出了一个我可以查看Javascript文档的资源。@纳迪尔:不客气。jQuery文档和Mozilla Javascript参考和指南真的很棒。我建议阅读该指南,它会让你对Javascript文档有更多的了解到JavaScript。快乐编码!:)亲爱的,我想我会尝试一下map函数。谢谢你指出我可以查看Javascript文档的资源。@Nadir:不客气。jQuery文档和Mozilla Javascript参考和指南非常棒。我建议阅读指南,它会让你对Javascript有更多的了解。愉快的编码!:)