Войти

Показать полную графическую версию : [решено] Получение Данных из таблицы(JS)


System Failure
26-05-2008, 01:55
Доброго времени суток, уважаемые форумчане.

Сложилась у меня небольшая проблема. Предположим есть таблица из пяти столбцов и трех строк. При помощи JS необходимо данные из этой таблицы загнать в двумерный массив. Вот только, к сожалению, я понятия не имею как можно доступиться к этим данным. По идее, можно каждой ячейке дать имя, и потом тупо перечисляя, загнать данные в массив таким образом:




<html>

<head>

<title></title>

</head>

<body onload="addData()">
<script language="javascript" type="text/javascript">
dataBase = new Array(0,0,0);
function addData()
{
dataBase[0] = document.getElementById("box0").innerText;
dataBase[1] = document.getElementById("box1").innerText;
dataBase[2] = document.getElementById("box2").innerText;
}

</script>
<table border="1">
<tr>
<td id="box0">5</td>
<td id="box1">83</td>
<td id="box2">79</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<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>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>

</body>

</html>



однако в таком случае это огромная ручная работа, особенно при таблицах бОльшего размера. есть ли возможность оптимизировать данный процесс?

mar
26-05-2008, 02:54
в чем ручная работа? если загнать в массив, то Ваш текст можно переписать с использованием цикла

for ( i=0; i<чего-то там; i++) {
var tmp_j = 'box'+i;
dataBase[i] = document.getElementById(tmp_j).innerText;
}


Или таблица не генерируется из кода и проблема написать все id ячеек вручную? Если так, то можно попробовать поупражняться с getElementByTagName в сочетании, например с id самой таблицы. При этом, например, отбирать ячейки, относящиеся к нужной таблице и, поскольку мы будем получать их последовательно, то столь же последовательно можно будет забирать данные в массив.

bruder
26-05-2008, 03:42
да, немного дополню:

<HTML>
<HEAD>
<script type="text/javascript">
<!--
function tabWalker() {
var tbls = document.getElementById("table");
var arr = new Array(tbls.rows.length);
for (var r=0; r<tbls.rows.length; r++) {
arr[r] = new Array(tbls.rows[r].cells.length);
for (var c=0; c<tbls.rows[r].cells.length; c++) {
arr[r][c] = tbls.rows[r].cells[c].innerHTML;
alert("arr["+r+"]["+c+"]="+arr[r][c]);
}
}
}
window.onload=tabWalker;
-->
</script>
</HEAD>

<BODY>
<table id="table">
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
<tr>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>0</td>
</tr>
</table>
</BODY>
</HTML>

mrcnn
26-05-2008, 08:36
А почему бы не создать всю таблицу не вручную, а с помощью JSа, где в числе прочего и присвоить имена в автоматическом режиме? document.writeln ('') - тупо генерируем строчки и столбцы.. Уже гарантированно известен формат таблицы и все айди, а mar уже расписала как получить к ним доступ




© OSzone.net 2001-2012