2013-08-24 40 views
0

我使用getElementsByClassName来获取tr的集合。使用getElementByClassName构建对象数组

我想现在遍历集合并获取tr中的文本框的值。我不能使用JQuery做这个或任何其他框架。

这怎么办?

var dom = document.getElementsByClassName('Row'); 
var arr = []; 
var len = dom.length; 
for (var i = 0; i < len; i++) { 
    // foo = look up value of a text box in this row 
    // bar = look up value of a text box in this row 
    var obj = { 
    quantity: foo, 
    price: bar 
    }; 
arr.push(obj); 
} 
+2

https://developer.mozilla.org/en-US/docs/Web/API/element.getElementsByTagName –

+0

上面的链接一定要注意,因为getElementsByClassName方法只能从IE9及以后 – MackieeE

+0

谢谢,我不实际使用'getElementsByClassName',但是放入它来简化示例。我正在使用'YUI'方法返回完全相同的东西@MackieeE @mu太短 – ojhawkins

回答

2

首先,这是getElementsByClassName,有一个“s” - 它可以得到一个以上的元素,所以它的名字是复数。

其次,getElementsByClassName不是它自己的函数,它是一个DOM对象的方法。

如果您想要获取文档中与给定类名相匹配的所有元素,则必须自行调用document.getElementsByClassName(),而不仅仅是getElementsByClassName()

所以,你需要这样做:

var dom = document.getElementsByClassName('Row'); 

dom对象,你得到这个也有可以作为根document对象相同的方法回内的元素,你可以可以调用dom[i].getElementsByClassName()

例如,要获得其中的所有textarea元素,您可以执行dom[i].getElementsBtTagName('textarea')

这应该有助于你走。

+0

道歉,你是对的,我的错误。当我遍历colllection时,我现在怎么能在'tr'中查找一个文本框@Spudley – ojhawkins

+0

@ojhawkins - 我已经给答案增加了一些,试图帮助更多。 – Spudley

+0

我应该能够使用'dom [i] .getElementById('foo')'? @Spudley – ojhawkins