44

次のようなテーブルがあります。

<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>

行内の td 要素の数をカウントしたい。やっています:

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

実際の結果を示していません。

4

10 に答える 10

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

セルはテーブルのプロパティではなく、行はプロパティです。ただし、セルは行のプロパティです

于 2012-04-06T12:58:18.973 に答える
5

あなたができる

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

ここでフィドルhttp://jsfiddle.net/TEZ73/

于 2012-04-06T12:59:22.227 に答える
1

まず、 を呼び出すときにgetElementByIdID を指定する必要があります。o_O

id を持つ dom 内の唯一のアイテムはtable要素です。tr可能であれば、要素に ID を追加できます (ID が一意であることを確認してください) 。

または、 を使用してドキュメント内getElementsByTagName('tr')の要素のリストを取得してからtr、tds の数を取得することもできます。

これは、コンソールが結果を記録するフィドルです...

于 2012-04-06T12:55:49.023 に答える
1

colspanまたはrowspanがすべて に設定されている場合1、子を数えるtdと正しい答えが得られます。tdただし、スパンがある場合、行の s の最大数によってさえ、列の数を正確に数えることはできません。次の例を検討してください。

var mytable = document.getElementById('table')
for (var i=0; i < mytable.rows.length; ++i) {
	document.write(mytable.rows[i].cells.length + "<br>");
}
table, th, td {
  border: 1px solid black;
  border-collapse: collapse;
  padding: 3px;
}
<table id="table">
    <thead>
        <tr>
            <th colspan="2">Header</th>
            <th rowspan="2">Hi</th>
        </tr>
        <tr>
            <th>Month</th>
            <th>Savings</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td colspan="2">hello</td>
            <td>world</td>
        </tr>
        <tr>
            <td>hello</td>
            <td colspan="2">again</td>
        </tr>
    </tbody>
</table>

于 2019-05-06T09:31:07.933 に答える
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>

結果:

Row 1 : 1 column
Row 2 : 4 column
于 2015-10-15T08:04:34.473 に答える