[英]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”類返回一個數組。 這是你需要為你的點長度做的數組。
您正在檢查元素是否具有該屬性。 您應該使用“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.