Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Перебор первого столбца таблицы (https://javascript.ru/forum/dom-window/18334-perebor-pervogo-stolbca-tablicy.html)

an.semionov 27.06.2011 00:30

Перебор первого столбца таблицы
 
Здравствуйте!

Подскажите как перебрать весь первый столбец в таблице при помощи JavaScript. В ячейках нужно заменить текст.

Спасибо.

trikadin 27.06.2011 01:27

<table id="table">
<tr>
<td>1</td>
</tr>
<tr>
<td>1</td>
</tr>
<tr>
<td>1</td>
</tr>
<tr>
<td>1</td>
</tr>
</table>

<script>
list= document.getElementById("table").getElementsByTagName("tr");
for (var i=0; i< list.length; ++i)
{
 list[i].getElementsByTagName("td")[0].innerHTML="2";
};
</script>

ksa 27.06.2011 10:01

trikadin, у таблицы есть коллекция rows, а у элементов той коллекции есть коллекция cells...

Пример из МСДН

<HTML>
<SCRIPT LANGUAGE="JScript">
function numberCells() {
    var count=0;
    for (i=0; i < document.all.oTable.rows.length; i++) {
        for (j=0; j < document.all.oTable.rows(i).cells.length; j++) {
            document.all.oTable.rows(i).cells(j).innerText = count;
            count++;
        }
    }
}
</SCRIPT>
<BODY onload="numberCells()">
<TABLE id=oTable border=1>
<TR><TH>&nbsp;</TH><TH>&nbsp;</TH><TH>&nbsp;</TH><TH>&nbsp;</TH></TR>
<TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
<TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
</TABLE>
</BODY>
</HTML>

an.semionov 27.06.2011 10:22

Спасибо, все работает.
Код не работает в FF.

Ошибка:
table.rows is not a function
[Прерывать на этой ошибке] table.rows[i].cells[0]...eplace(/<strong.*?<\/strong>/g, '');

an.semionov 27.06.2011 11:24

Цитата:

Сообщение от ksa (Сообщение 110705)
trikadin, у таблицы есть коллекция rows, а у элементов той коллекции есть коллекция cells...

Пример из МСДН

<HTML>
<SCRIPT LANGUAGE="JScript">
function numberCells() {
    var count=0;
    for (i=0; i < document.all.oTable.rows.length; i++) {
        for (j=0; j < document.all.oTable.rows(i).cells.length; j++) {
            document.all.oTable.rows(i).cells(j).innerText = count;
            count++;
        }
    }
}
</SCRIPT>
<BODY onload="numberCells()">
<TABLE id=oTable border=1>
<TR><TH>&nbsp;</TH><TH>&nbsp;</TH><TH>&nbsp;</TH><TH>&nbsp;</TH></TR>
<TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
<TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
</TABLE>
</BODY>
</HTML>

Данное решение не работает в firefox

ksa 27.06.2011 11:37

an.semionov, это всего лишь демонстрация, описаных мной, методов... Они работают везде. А вот

document.all.oTable


не везде...
Используй

document.getElementById('oTable')

ksa 27.06.2011 11:39

<HTML>
<SCRIPT LANGUAGE="JScript">
function numberCells() {
    var o=document.getElementById('oTable');
    var count=0;
    for (i=0; i < o.rows.length; i++) {
        for (j=0; j < o.rows(i).cells.length; j++) {
            o.rows(i).cells(j).innerHTML = count;
            count++;
        }
    }
}
</SCRIPT>
<BODY onload="numberCells()">
<TABLE id='oTable' border=1>
<TR><TH>&nbsp;</TH><TH>&nbsp;</TH><TH>&nbsp;</TH><TH>&nbsp;</TH></TR>
<TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
<TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
</TABLE>
</BODY>
</HTML>

an.semionov 27.06.2011 14:05

Цитата:

Сообщение от ksa (Сообщение 110723)
<HTML>
<SCRIPT LANGUAGE="JScript">
function numberCells() {
    var o=document.getElementById('oTable');
    var count=0;
    for (i=0; i < o.rows.length; i++) {
        for (j=0; j < o.rows(i).cells.length; j++) {
            o.rows(i).cells(j).innerHTML = count;
            count++;
        }
    }
}
</SCRIPT>
<BODY onload="numberCells()">
<TABLE id='oTable' border=1>
<TR><TH>&nbsp;</TH><TH>&nbsp;</TH><TH>&nbsp;</TH><TH>&nbsp;</TH></TR>
<TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
<TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
</TABLE>
</BODY>
</HTML>

в FF не работает код, таблица создается, но не заполняется.

Ошибка:
table.rows is not a function
[Прерывать на этой ошибке] table.rows[i].cells[0]...eplace(/<strong.*?<\/strong>/g, '');

ksa 27.06.2011 14:42

an.semionov, а чуть самостоятельности? :)

<!DOCTYPE html>
<html>
<head>
<title>test</title>
<style type="text/css">
</style>
<script type="text/javascript">
function numberCells() {
    var o=document.getElementById('oTable');
    var count=0;
    for (i=0; i < o.rows.length; i++) {
        for (j=0; j < o.rows[i].cells.length; j++) {
            o.rows[i].cells[j].innerHTML = count;
            count++;
        }
    }
}
</script>
</head>
<body onload="numberCells()">
<TABLE id='oTable' border=1>
	<TR><TH>&nbsp;</TH><TH>&nbsp;</TH><TH>&nbsp;</TH><TH>&nbsp;</TH></TR>
	<TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
	<TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>
</TABLE>
</body>
</html>

an.semionov 27.06.2011 15:03

Пробовал [], не сработало, видимо забыл изменить в условии цикла, спасибо.


Часовой пояс GMT +3, время: 18:53.