JAVASCRIPT:for循环数组未定义-1索引
2016-12-25
801
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)] 未定义”
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
}
}
}
这里也出错了
if 语句中的未定义值中断 for 循环
这里是数据结构
<div class="divs"></div>
<div class="divs"></div>
<div class="divs"></div>
.....
when i=0 it checks for -1 in index
"therefor array index does not exist cousing for loop to stop"
解决方案:
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
3个回答
根据
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
}
}
Nina Scholz
2016-12-25
您的循环不会运行。例如:
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
}
}
}
Saman Hajizade
2016-12-25
数组中的索引从 0 开始。当 i=0 时,array(i-1) 等于 array(-1),这是未定义的。顺便说一下,要获取数组值,请使用方括号,而不是圆括号。例如 arr[1]
因此您应该使用:
for(var i = 0; i < array.length; i++){
if(array[i].getAttribute("data") > 1){
// your code here
}
}
mrid
2016-12-25