HTML集合和;Javascript中的数组
下面的代码只生成一个错误。我希望检索每个div的REL属性值。不知道,为什么我不能做 我在控制台中看到的错误:未捕获类型错误:对象没有方法“getAttribute”HTML集合和;Javascript中的数组,javascript,arrays,dom,Javascript,Arrays,Dom,下面的代码只生成一个错误。我希望检索每个div的REL属性值。不知道,为什么我不能做 我在控制台中看到的错误:未捕获类型错误:对象没有方法“getAttribute” <div class="boxes"> <div rel="first" class="box">Box 1</div> <div rel="second" class="box">Box 2</div> <d
<div class="boxes">
<div rel="first" class="box">Box 1</div>
<div rel="second" class="box">Box 2</div>
<div rel="third" class="box">Box 3</div>
</div>
<script>
$(function(){
var i = 0;
var allDivs = document.getElementsByClassName('box');
var arr = [];
arr.push(allDivs);
setInterval(function(){
console.log(arr[i].getAttribute('rel'));
i++;
}, 1000);
});
</script>
方框1
方框2
方框3
$(函数(){
var i=0;
var allDivs=document.getElementsByClassName('box');
var-arr=[];
arr.push(所有divs);
setInterval(函数(){
log(arr[i].getAttribute('rel');
i++;
}, 1000);
});
您正在将一个数组(确切地说是节点列表)推入一个数组,并尝试从节点列表对象而不是单个元素获取属性。试试这个:
<div class="boxes">
<div rel="first" class="box">Box 1</div>
<div rel="second" class="box">Box 2</div>
<div rel="third" class="box">Box 3</div>
</div>
<script>
$(function(){
var i = 0;
var allDivs = document.getElementsByClassName('box');
var arr = [];
arr.push(allDivs);
setInterval(function(){
console.log(arr[0][i].getAttribute('rel'));
i++;
}, 1000);
});
</script>
这将把allDivs集合中的所有单个元素附加到
arr
上。然后,您可以像以前一样访问arr
:arr[i].getAttribute('rel')
(arr的内容将是[,];
)用以下内容替换脚本:
$(function(){
var i = 0;
var allDivs = document.getElementsByClassName('box');
//allDivs itself is an array and there is no need to push the result to an array.
setInterval(function(){
console.log(allDivs[i].getAttribute('rel'));
i++;
}, 1000);
});
.getElementsByCassName
不返回一个。相反,它返回一个。谢谢你的区别。重要的是要知道getElementsByClassName的返回值不是javascript数组,而是一个称为节点列表的活动集合。我更新了我的答案,使之更清楚。
arr.push.apply(arr, allDivs);
$(function(){
var i = 0;
var allDivs = document.getElementsByClassName('box');
//allDivs itself is an array and there is no need to push the result to an array.
setInterval(function(){
console.log(allDivs[i].getAttribute('rel'));
i++;
}, 1000);
});