2012-04-06 79 views
25

Tôi có một bảng tương tự nhưJavascript: Đếm số cột trong một dòng của bảng

<table id="table1"> 
<tr> 
    <td><input type="text" value="" /></td> 
    <td><input type="text" value="" /></td> 
    <td><input type="text" value="" /></td> 
    <td><input type="text" value="" /></td> 
</tr> 
<tr> 
    <td><input type="text" value="" /></td> 
    <td><input type="text" value="" /></td> 
    <td><input type="text" value="" /></td> 
    <td><input type="text" value="" /></td> 
</tr> 
<table> 

Tôi muốn đếm số lượng các yếu tố td liên tiếp. Tôi đang cố gắng

document.getElementById('').cells.length; 
document.getElementById('').length; 
document.getElementById('').getElementsByTagName('td').length; 

Nó không hiển thị kết quả thực tế.

+0

Bạn phải sử dụng jQuery FGS –

+0

Bởi fo llowing bạn có thể nhận được số hàng trong một bảng: document.getElementById ('someid'). getElementsByTagName ('tr'). length; –

+3

@pinouchon Khi một yêu cầu cho một giải pháp trong Javascript, "bạn phải sử dụng jQuery" không phải là một câu trả lời. – Rodrigo

Trả lời

41
document.getElementById('table1').rows[0].cells.length 

tế bào không phải là một tài sản của một bảng, hàng đang có. Tế bào là một tài sản của một hàng dù

+2

Điều này chỉ hoạt động trong các trường hợp đơn giản, trong đó colspan = 1 cho tất cả các ô và tất cả các hàng có cùng số cột. (HTML cho phép các hàng có số lượng cột khác nhau, trong trường hợp đó các hàng có quá ít cột có được khoảng trắng ở cuối.) –

+1

Không chắc chắn ý của bạn là gì. Câu hỏi đặt ra là về các ô liên tiếp. Nếu colspan = 2 và thiếu hai thì vẫn chỉ có một ô. Có một chút bối rối khi sử dụng hàng mặc dù, nhưng vẫn đúng, hãy xem câu hỏi sau: http://jsfiddle.net/GF6Dr/ Nếu bạn muốn số lượng ô trong bảng sau đó thực hiện của tất cả các tế bào. –

1

Trước tiên, khi bạn gọi getElementById, bạn cần cung cấp id. o_O

Mục duy nhất trong dom của bạn có id là yếu tố table. Nếu có thể, bạn có thể thêm id (đảm bảo chúng là duy nhất) cho các phần tử tr của bạn.

Hoặc, bạn có thể sử dụng getElementsByTagName('tr') để nhận danh sách các phần tử tr trong tài liệu của mình và sau đó nhận số lượng tds.

here is a fiddle that console logs the results...

-2
$('#table1').find(input).length 
+1

mô tả câu trả lời của bạn chi tiết hơn! –

0
<table id="table1"> 
<tr> 
    <td colspan=4><input type="text" value="" /></td> 

</tr> 
<tr> 
    <td><input type="text" value="" /></td> 
    <td><input type="text" value="" /></td> 
    <td><input type="text" value="" /></td> 
    <td><input type="text" value="" /></td> 

</tr> 
<table> 
<script> 
    var row=document.getElementById('table1').rows.length; 
    for(i=0;i<row;i++){ 
    console.log('Row '+parseFloat(i+1)+' : '+document.getElementById('table1').rows[i].cells.length +' column'); 
    } 
</script> 

Kết quả:

Row 1 : 1 column 
Row 2 : 4 column 
Các vấn đề liên quan