0

这是我的问题的 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]);
}

我的问题是控制台没有显示正确的结果我看到退货、暂停、交换、未定义.....它正在跳过购买并显示未定义?为什么购买未定义?

4

2 回答 2

1

您的代码大部分是正确的,它将所有项目的正确值推入数组。您正在使用的 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 开始您的循环,并且只会在 i 小于计数时运行。因此它将访问 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/

于 2013-09-11T02:58:12.963 回答
0

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

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

演示:小提琴

于 2013-09-11T02:56:21.657 回答