javascript循环遍历具有类名的表行
下面是下表代码,我想将所有TD值存储到一个数组中javascript循环遍历具有类名的表行,javascript,arrays,Javascript,Arrays,下面是下表代码,我想将所有TD值存储到一个数组中 <tr class="item-row"> <td class="item-name"><textarea>Item</textarea></td> <td class="description"><textarea>Item</textarea></td> <td><textarea class=
<tr class="item-row">
<td class="item-name"><textarea>Item</textarea></td>
<td class="description"><textarea>Item</textarea></td>
<td><textarea class="cost">$0.00</textarea></td>
<td><textarea class="qty">0</textarea></td>
<td><span class="price">$0.00</span></td>
</tr>
<tr class="item-row">
<td class="item-name"><textarea>Item</textarea></td>
<td class="description"><textarea>Item</textarea></td>
<td><textarea class="cost">$0.00</textarea></td>
<td><textarea class="qty">0</textarea></td>
<td><span class="price">$0.00</span></td>
</tr>
但这并没有给我任何输出…我是javascript新手,所以我可能在很大程度上遗漏了一些东西。对于成为javascript新手,您的第一个努力是很好的,但是,是的,有很多项目需要更新。:) 以下是您需要做的您正在尝试做的事情:
function checkForm() {
var rows = document.getElementsByClassName("item-row");
var arr = new Array();
for (i = 0; i < rows.length; i++) {
var cols = rows[i].getElementsByTagName("td");
for (j = 0; j < cols.length; j++) {
arr.push(cols[j].textContent);
}
}
}
函数检查表(){
var rows=document.getElementsByClassName(“项目行”);
var arr=新数组();
对于(i=0;i
i=0
到i
元素(var cols=rows[i].getElementsByTagName(“td”);来收集该行中的所有列
j=0
toj
td
中包含的文本,请使用textContent
属性…值(即值
属性)仅用于
元素循环构建时,您使用,
而不是;
,在尝试获取td
内容时,您使用val
而不是value
),但这就是我所看到的一切
编辑:我还假设您在添加HTML时没有粘贴
标记,但是,如果您没有粘贴,您的
标记必须位于中。对于JavaScript新手来说,这是一个很好的第一步,但是,是的,有很多项需要更新。:)
以下是您需要做的您正在尝试做的事情:
function checkForm() {
var rows = document.getElementsByClassName("item-row");
var arr = new Array();
for (i = 0; i < rows.length; i++) {
var cols = rows[i].getElementsByTagName("td");
for (j = 0; j < cols.length; j++) {
arr.push(cols[j].textContent);
}
}
}
函数检查表(){
var rows=document.getElementsByClassName(“项目行”);
var arr=新数组();
对于(i=0;i
你需要在每一行中循环。最简单的方法是在for循环中从i=0
到i
有了一行之后,您需要通过查找所有
元素(var cols=rows[i].getElementsByTagName(“td”);来收集该行中的所有列
然后,循环遍历每一行,就像对行(j=0
toj
最后,要获取每个td
中包含的文本,请使用textContent
属性…值(即值
属性)仅用于
元素
那里也有一些语法错误(在为循环构建时,您使用,
而不是;
,在尝试获取td
内容时,您使用val
而不是value
),但这就是我所看到的一切
编辑:我还假设您在添加HTML时没有粘贴
标记,但是,如果您没有粘贴,则
标记必须位于中,您的代码几乎正确,问题是行
属性适用于表而不是tr
s,因此您必须使用表而不是tr
直接输入
另一件事是getElementsByClassName
返回元素数组,因此必须使用[index]
获取元素
最后一件事是要获取单元格的值
不能使用val
,因此使用firstChild
获取子项,使用值
获取代码中的值,或者更好地使用@pawel直接建议的单元格。textarea
:)
请尝试使用以下代码:
函数检查表(){
var table=document.getElementsByClassName(“yourTable”)[0];
var arr=新数组();
for(变量i=0,行;行=表。行[i];i++){
for(var j=0,col;col=row.cells[j];j++){
arr.push(row.cells[j].firstChild.value);
}
}
控制台日志(arr);
}
项目
项目
$0.00
0
$0.00
项目
项目
$0.00
0
$0.00
您的代码几乎是正确的,问题是行
属性不适用于tr
s的表,因此您必须直接使用表,而不是tr
另一件事是getElementsByClassName
返回元素数组,因此必须使用[index]
获取元素
最后一件事是要获取单元格的值
不能使用val
,因此使用firstChild
获取子项,使用值
获取代码中的值,或者更好地使用@pawel直接建议的单元格。textarea
:)
请尝试使用以下代码:
函数检查表(){
var table=document.getElementsByClassName(“yourTable”)[0];
var arr=新数组();
for(变量i=0,行;行=表。行[i];i++){
for(var j=0,col;col=row.cells[j];j++){
arr.push(row.cells[j].firstChild.value);
}
}
控制台日志(arr);
}
项目
项目