繁体   English   中英

jQuery每个函数和数组在for循环中显示未定义

[英]jquery each function and array show undefined in a for loop

这是我的问题的HTML部分

<DIV ID="CONTAINER">
    <DIV CLASS="ITEMS">
        Purchase
    </DIV>
    <DIV CLASS="ITEMS">
        Return
    </DIV>
    <DIV CLASS="ITEMS">
        On Hold
    </DIV>
    <DIV CLASS="ITEMS">
        Exchange
    </DIV>
</DIV>    

jQuery的

var MyArray = [];  
var $Items = $('.ITEMS');
$Items.each( 
  function(){
    Value = $.trim($(this).html());
    MyArray.push(Value);
  }
);
var Count_Parts = MyArray.length;            
for (i = 1; i <= Count_Parts; i++ ){
  console.log(MyArray[i]);
}

我的问题是控制台无法显示正确的结果,我看到退货,保留,交换,未定义.....它正在跳过购买并显示未定义? 为什么未定义购买?

您的代码大部分是正确的,它将所有项目的正确值推入数组。 您正在使用的for循环未按预期进行迭代。 如果您看这行:

for (i = 1; i <= Count_Parts; i++ ){

您从数字1开始循环,并要求它在小于或等于Count_Parts(即4)时停止循环。 现在,当您访问数组中的元素时,您正在访问元素1,2,3,4。 但是,该数组从0开始,并且元素存储在0、1、2、3。

正确的实现是:

for (i = 0; i < Count_Parts; i++ ){

这将从0开始循环,并且仅在我小于计数时运行。 因此它将访问0、1、2、3,这是存储所有元素的数组。

您的代码中包含更正的完整部分是:

var MyArray = [];  
var $Items = $('.ITEMS');
$Items.each( 
  function(){
    Value = $.trim($(this).html());
    MyArray.push(Value);
  }
);
var Count_Parts = MyArray.length;            
for (i = 0; i < Count_Parts; i++ ){
  console.log(MyArray[i]);
}

JsFiddle: http : //jsfiddle.net/MQBnW/

数组索引从0 ...(length -1)开始

var Count_Parts = MyArray.length;            
for (i = 0; i < Count_Parts; i++ ){
  console.log(MyArray[i]);
}

演示: 小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM