Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Создать циклом массив из значений таблицы...
 
 автор: coloboc66   (11.05.2010 в 16:54)   письмо автору
 
 

В таблице 10 строк.
Нужно создать циклами массив из данных, находящихся в input для передачи на сервер. Я слегка запутался. :
<table border='1'>
<tr>
<th>N</th><th>U,B</th><th>Za,Om</th><th>Zi, Om</th><th>Zф, Om</th><th>Iкз, A</th>
</tr>
<tr>
<td>1</td>
<td><input id='inp_neopr_er180_U1' type='text' size='4' value='219' /></td>
<td><input id='inp_neopr_er180_Za1' type='text' size='4' value='0.5' /></td>
<td><input id='inp_neopr_er180_Zi1' type='text' size='4' value='0.41' /></td>
<td id='td_neopr_er180_Zf1'>0.36</td>
<td id='td_neopr_er180_Ikz1'>608.3</td>
</tr>
...

<tr>
<td>10</td>
<td><input id='inp_neopr_er180_U10' type='text' size='4' value='223' /></td>
<td><input id='inp_neopr_er180_Za10' type='text' size='4' value='0.5' /></td>
<td><input id='inp_neopr_er180_Zi10' type='text' size='4' value='0.39' /></td>
<td id='td_neopr_er180_Zf10'>0.34</td>
<td id='td_neopr_er180_Ikz10'>655.9</td>
</tr>
</table>

Как-то так не получается:

var arr=new Array();
for (var i=0;i<9;i++)
arr['U'][i] = document.getElementtById('inp_neopr_er180_U'+i).value;
arr['Za'][i] = document.getElementtById('inp_neopr_er180_Za'+i).value;
arr['Zi'][i] = document.getElementtById('inp_neopr_er180_Zi'+i).value;
}

Или нужно идентификаторы подобрать по-другому?

  Ответить  
 
 автор: sim5   (11.05.2010 в 17:09)   письмо автору
 
   для: coloboc66   (11.05.2010 в 16:54)
 

А полям имена как массив, и не надо никаких сценариев, почему не подходит?

  Ответить  
 
 автор: coloboc66   (11.05.2010 в 17:18)   письмо автору
 
   для: sim5   (11.05.2010 в 17:09)
 

Не понял... Но цикл-то всё-равно нужен? Я могу всё сделать вручную без цикла, наподобие:
arr['U1']=document.getElementById('inp_neopr_er180_U1').value;
...
arr['U10']=document.getElementById('inp_neopr_er180_U10').value;
и так далее
Но хотелось бы циклом - это универсальней.

  Ответить  
 
 автор: sim5   (11.05.2010 в 17:21)   письмо автору
 
   для: coloboc66   (11.05.2010 в 17:18)
 

А что непонятного то? Элементы формы это уже массив, а сгруппированные элементы в форме с именами name[], на сервере будут представлены массивом name.

  Ответить  
 
 автор: coloboc66   (11.05.2010 в 17:23)   письмо автору
 
   для: sim5   (11.05.2010 в 17:21)
 

А у меня массив для аякса, там name не катит, по-моему... А может катит...

  Ответить  
 
 автор: sim5   (11.05.2010 в 18:10)   письмо автору
 
   для: coloboc66   (11.05.2010 в 17:23)
 

Ну тогда уж document.getElementsByName('name[]') и склеивайте их значения, или чего вам надо.

  Ответить  
 
 автор: АЯ   (11.05.2010 в 19:05)   письмо автору
 
   для: coloboc66   (11.05.2010 в 16:54)
 

1. Передавать аяксом вы можете только строку.
2. Потому вам надо формировать именно строку (а не массив).
3. Легче всего дать тегу <TABLE> какой-то id и потом перебрать коллекцию тегов <INPUT> внутри таблицы.
Положим, <table id="myTBL">, тогда:
var obj = doicument.getElementById ('myTBL').getElementsByTagName ('INPUT');
for (var tempArray = [], j = 0; j < obj.length; j++)
   {
   //эдесь читаете obj [j].name и obj [j].value
   //и, используя гарантированно неиспользуемые в инпутах последовательности символов
   //в качестве разделителей, формируете строку, например, так:
   tempArray [j] = obj [j].name + 'U=R=A' + obj [j].value;
   }
//Затем "склеиваете" текущий массив в строку, опять же используя уникальный разделитель:
var result = tempArray.join ('W=A=U');
Переменную result можете отсылать на сервер, где необходимо будет "рассплитовать" её значение сначала по 'W=A=U', а затем каждый из полученных элементов - по 'U=R=A'.

Если будете отсылать методом GET, тогда можете безболезненно использовать символы '=' и '&', и на сервере работать с массивом $_SERVER['QUERY_STRING'].

  Ответить  
 
 автор: coloboc66   (12.05.2010 в 17:12)   письмо автору
 
   для: АЯ   (11.05.2010 в 19:05)
 

Спасибо, на сервер данные отправил. Теперь проблема с их получением. Получаю с сервера строку вида
str_Zf='0.36||0.35||0.37||0.36||0.34||0.38||0.33||0.35||0.36||0.34||";//это получается

Её нужно разделить на значения:
arr_Zf=str_Zf.split('||');//и это получается

И эти значения вписать в ячейки таблицы с
 id=' td_neopr_er180_Zf1' ... 'td_neopr_er180_Zf10' //а это НЕ получается

  Ответить  
 
 автор: АЯ   (13.05.2010 в 01:43)   письмо автору
 
   для: coloboc66   (12.05.2010 в 17:12)
 

str_Zf='0.36||0.35||0.37||0.36||0.34||0.38||0.33||0.35||0.36||0.34||";//это получается

arr_Zf=str_Zf.split('||');//и это получается

for (var j = 1; j <= arr_Zf.length; j++)
document.getElementById ('d_neopr_er180_Zf' + j).innerHTML = arr_Zf [j - 1];

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования