簡體   English   中英

JAVASCRIPT:for循環數組未定義-1索引

[英]JAVASCRIPT : for loop array undefined -1 index

var alldivstamp = document.getElementsByClassName("divs");
for(var i = 0; i < array.length; i++){
    if(array[i-1].getAttribute("data") > 1){
        //error here = TypeError: array[(i - 1)] is undefined
    }
}

錯誤輸出:“TypeError:array [(i - 1)] is undefined”

for(var i = 0; i < array.length; i++){
    if (typeof foo !== 'undefined') {
        if(array[i-1].getAttribute("data") > 1){
            //error here = TypeError: array[(i - 1)] is undefined
        }
    }   
}

這沒有解決它

for(var i = 0; i < array.length; i++){
    if (typeof foo !== 'undefined' && i < 1 && i > array.length-1) {
        if(array[i-1].getAttribute("data") > 1){
            //error here = TypeError: array[(i - 1)] is undefined
        }
    }   
}

錯誤也在這里

undefined value in if statement breaks for loop

這是數據結構

<div class="divs"></div>
<div class="divs"></div>
<div class="divs"></div>
.....

當i = 0時,它在索引中檢查-1
“因此,數據索引不存在,以便循環停止”

解:

for(var i = 0; i < array.length; i++){
    if (i > 0) {
        if(array(i-1).getAttribute("data") > 1){
            //do ...
        }
    }if(i == 0){
        //do ...
    }   
}

成功!


錯誤:(TypeError:“x”是(不是)“y”)

TypeError: "x" is (not) "y"

Examples:
TypeError: "x" is undefined
TypeError: "x" is null
TypeError: "undefined" is not an object
TypeError: "x" is not an object or null
TypeError: "x" is not a symbol

根據document.getElementsByClassName ,您將獲得一個類似於具有元素的對象的數組。

您可以使用索引來訪問項目

array[i]

對於屬性,你可以使用點符號,比如

array[i].foo

或括號表示法

array[i]['foo']

或像getAttribute這樣的方法。

array[i].getAttribute('data')

一個有效的循環,可能是這個

array = document.getElementsByClassName("divs");
for (var i = 0; i < array.length; i++){
    if (array[i].getAttribute('data')) { // check for truthyness
        // do something
    }
}

你的循環沒有運行。 喜歡:

 var i = 0; i < array.length; i++

但運行如下:

 var i = 0; i <= array.length; i++

從錯誤中解決這個問題:

for(var i = 0; i <= array.length; i++){
    var data = array[i];
    if(data){
      if(data.getAttribute("data") > 1){
        // your code
      }
    }
}

要么

for(var i = 1 ; i <= array.length + 1; i++){
    var data = array[i - 1];
    if(data){
      if(data.getAttribute("data") > 1){
        // your code
      }
    }
}

數組中的索引從0開始。當i = 0時,數組(i-1)等於未定義的數組(-1)。 順便說一下,獲取數組值,使用方括號,而不是圓括號。 例如。 ARR [1]

所以你應該使用:

for(var i = 0; i < array.length; i++){
    if(array[i].getAttribute("data") > 1){
        // your code here
    }
}

對於第一次迭代 i=0 ,則array[i-1] = array[-1] 這是不存在的

這可能是這樣的

for(var i = 1; i < array.length; i++){
    if(array[i-1].getAttribute("data") > 1){
        //success
    }
}

要么

for(var i = 0; i < array.length; i++){
    if(array[i].getAttribute("data") > 1){
        //success
    }
}

DOM選擇器根據您的“divs”類返回一個數組。 這是你需要為你的點長度做的數組。

UPDATE

您正在檢查元素是否具有該屬性。 您應該使用“hasAttribute”方法。

你的代碼......

var alldivstamp = document.getElementsByClassName("divs");
for(var i = 0; i < array.length; i++){
    if(array[i-1].getAttribute("data") > 1){
        //error here = TypeError: array[(i - 1)] is undefined
    }
}

應該...

var alldivstamp = document.getElementsByClassName("divs");
for(var i = 0; i < alldivstamp.length; i++){
    if(alldivstamp[i].hasAttribute("data") === false){
        //error here = TypeError: array[(i - 1)] is undefined
    }
}
for(var i = 0; i < array.length; i++){
    if (i > 0) {
        if(array(i-1).getAttribute("data") > 1){
            //do ...
        }
    }if(i == 0){
        //do ...
    }   
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM