2013-04-21 38 views
1

我在javascript彈出窗口中有一個小函數,我想知道如果getElementByClassName函數返回的所有元素與該類的數組比爲什麼當我警告它說對象Html輸入元素儘管我有什麼在我的表單編號字段(空格或一些數字)內。那麼我如何從該數組中獲取值。javascript getElementsByClassName值錯誤

var arr = document.getElementsByClassName('num'); 

function popUp(){ 
    for(var i = 0;i < arr.length;i++){ 
     alert(arr[i]); 
    } 
} 

下面是HTML:

<form id = "matrix"> 

<input type = "number" class = "num" /> 
<input type = "number" class = "num" /> 

<input type = "number" class = "num" /> 
<input type = "number" class = "num" /> 

<input type = "button" value = "count" id = "count" onclick = "popUp()"/> 
</form> 
</div> 
+1

它返回_elements_的陣列狀物體(實際上的HTMLCollection) - 不_values_。 – nnnnnn 2013-04-21 12:01:07

回答

2

使用.value的

alert(arr[i].value); 

如果您需要與IE8-兼容,你不應該使用

type = "number" 

它是HTML5,不受IE8-支持。
改爲使用type =「text」。

+0

是的,有一個輸入類型「數字」 – 2013-04-21 12:01:30

+0

@Tomer Arazy:是的,我剛剛看到。它是HTML5中的新功能。 – 2013-04-21 12:15:13

+0

如果jQuery可以放棄對IE8的支持,我認爲有人是初學者可以放棄對IE8的支持...... – 2013-04-21 12:32:03

1

document.getElementsByClassName()返回DOM元素的集合,因此arr[i]可以獲取DOM元素,而不是元素中的元素。如果你想從像input標籤的value是DOM元素的屬性,那麼你必須引用您希望這樣的財產.value

var arr = document.getElementsByClassName('num'); 

function popUp(){ 
    for(var i = 0;i < arr.length;i++){ 
     alert(arr[i].value); 
    } 
} 
0

getElementsByClassName方法將返回所有匹配的HTML元素的列表。通過調用alert(arr [i]),您告訴客戶端顯示該元素,而不是它的值,這就是爲什麼警報消息告訴您它是一個html輸入。要顯示該元素的值,使用以下

alert(arr[i].value);