Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Получение Данных из таблицы(JS) (http://forum.oszone.net/showthread.php?t=107759)

System Failure 26-05-2008 01:55 810732

Получение Данных из таблицы(JS)
 
Доброго времени суток, уважаемые форумчане.

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


HTML код:


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

в чем ручная работа? если загнать в массив, то Ваш текст можно переписать с использованием цикла
PHP код:

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


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

bruder 26-05-2008 03:42 810752

да, немного дополню:

Код:

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

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


Время: 22:25.

Время: 22:25.
© OSzone.net 2001-