2017-01-09 43 views
0

我試圖從多個div元素獲取數據屬性的值。元件被捕獲到使用。queryAlectorAll()返回的元素上的.getAttribute()方法

querySelectorAll()

我得到的誤差的變量時通過我包含元素,並使用的getAttribute()方法可變環:

<div id="container"> 
    <div class="box" data-speed="2" id="one"></div> 
    <div class="box" data-speed="3" id="two"></div> 
    <div class="box" data-speed="4" id="three"></div> 
    <div class="box" data-speed="5" id="four"></div> 
    <div class="box" data-speed="6" id="five"></div> 
</div> 

JS:

(function() { 

var boxes = document.getElementsByClassName("box"); 

for (var i = 0; i < boxes.length; i++) { 

var r = Math.floor((Math.random() * 254) + 1); 

boxes[i].style.background = "rgba(" + r + "," + i*30 + "," + i*45 + ", 1)"; 

} 
})(); 

var divArray = []; 
var divs = document.querySelectorAll(".box"); 

for (i = 0; i <= divs.length; i++) { 

console.log(divs[i]); 

var speed = parseInt(divs[i].getAttribute("data-speed")); 

}; 

的jsfiddle https://jsfiddle.net/kshatriiya/L8xsvzL1/1/

當我

console.log(divs[i])

它顯示的元素,我不知道爲什麼我不能使用屬性的方法就可以了。

任何指針將非常感激!

+1

「我收到一個錯誤」 - 什麼錯誤? – Quentin

+0

對不起,我更新了我的jsfiddle,它指向舊的: 錯誤是「Uncaught TypeError:無法讀取屬性'getAttribute'未定義」 – kshatriiya

回答

2

陣列中的JavaScript是0基於索引

使用

for (i = 0; i < divs.length; i++) { 

,而不是

for (i = 0; i <= divs.length; i++) { 

由於這個你得到最後的div [I]爲未定義,這就是爲什麼控制檯顯示器那個錯誤

更新的小提琴:https://jsfiddle.net/n3qhan4e/

+0

噢,上帝,這是我的一個新手的錯誤,謝謝你你的幫助。 – kshatriiya

+0

@kshatriiya:NP :)很高興幫助。 – Deep

相關問題