|
|
|
| В таблице 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;
}
|
Или нужно идентификаторы подобрать по-другому? | |
|
|
|
|
|
|
|
для: coloboc66
(11.05.2010 в 16:54)
| | А полям имена как массив, и не надо никаких сценариев, почему не подходит? | |
|
|
|
|
|
|
|
для: sim5
(11.05.2010 в 17:09)
| | Не понял... Но цикл-то всё-равно нужен? Я могу всё сделать вручную без цикла, наподобие:
arr['U1']=document.getElementById('inp_neopr_er180_U1').value;
...
arr['U10']=document.getElementById('inp_neopr_er180_U10').value;
и так далее
Но хотелось бы циклом - это универсальней. | |
|
|
|
|
|
|
|
для: coloboc66
(11.05.2010 в 17:18)
| | А что непонятного то? Элементы формы это уже массив, а сгруппированные элементы в форме с именами name[], на сервере будут представлены массивом name. | |
|
|
|
|
|
|
|
для: sim5
(11.05.2010 в 17:21)
| | А у меня массив для аякса, там name не катит, по-моему... А может катит... | |
|
|
|
|
|
|
|
для: coloboc66
(11.05.2010 в 17:23)
| | Ну тогда уж document.getElementsByName('name[]') и склеивайте их значения, или чего вам надо. | |
|
|
|
|
|
|
|
для: 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']. | |
|
|
|
|
|
|
|
для: АЯ
(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' //а это НЕ получается
|
| |
|
|
|
|
|
|
|
для: 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];
|
| |
|
|
|