Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как динамически поменять имя Элемента (https://javascript.ru/forum/dom-window/33083-kak-dinamicheski-pomenyat-imya-ehlementa.html)

CheBurashka 09.11.2012 17:00

Как динамически поменять имя Элемента
 
При удалении динамически с формы Элемента необходимо повторно присвоить Элементам имена
Элемеенты добавляются DOM
<input type="text" name="val1(1)"> 
<input type="text" name="val1(2)">
<input type="text" name="val1(3)">

после нажатия на кнопку удалить элемент необходимо (допустим val1(2)) необходимо переименовать элементы т.е. что бы получилось следущее
<input type="text" name="val1(1)"> 
<input type="text" name="val1(2)">

Как это реализовать.

danik.js 09.11.2012 18:12

Тогда с какой целью даются уникальные имена? Не проще ли дать имя val1[] (тоесть <input type="text" name="val1[]" /> и на сервере работать с переданным параметром как с массивом значений ?

Для php:

$val1 = $_POST['val1[]'];
//$val1 = $_POST['val1']; // или так, не помню точно

print_r($val1);

a_l 09.11.2012 18:19

После удаления элемента вызывать следующую функцию:
function inputRename() { 
  for(var i=0, l=document.querySelectorAll('input[type=text]').length; i<l; i++) {
    document.querySelectorAll('input[type=text]')[i].name = 'val1('+(i+1)+')';
  }
};

CheBurashka 09.11.2012 18:54

Тогда с какой целью даются уникальные имена? Не проще ли дать имя val1[] (тоесть <input type="text" name="val1[]" /> и на сервере работать с переданным параметром как с массивом значений ?

Для php:

$val1 = $_POST['val1[]'];
//$val1 = $_POST['val1']; // или так, не помню точно

print_r($val1);
Где можно поподробнее почитать про этот метод ну и про сам DOM

danik.js 09.11.2012 21:57

Я так понял формат записи parameter[] не документирован, и поддерживается только некоторыми вариантами server-side'а.
PHP это однозначно. Возможно еще чем-то.

В php к параметру нужно обращаться без скобок: $_POST['val1'], в html же все так, как я указал.

Тут кое что об этом всем.

CheBurashka 10.11.2012 00:36

Спасибо большое за помощь)

Задачу всё же решил по своему
((с) Если у тебя что то не получается - Значит ты где то недочитал , Что то недопонял)
El=this.parentNode.parentNode.parentNode.rowIndex;            
htmlTable.deleteRow(this.parentNode.parentNode.parentNode.rowIndex);
document.getElementById("strok").value=tableRows.length-2;
//нужен для того что при удалении предпоследней строки почему то не обновляет имя
if(El==tableRows.length)
{
	for( j = 0; j < 12; j += 1 ) 
	{ 
document.getElementsByName("val"+(j+1)+"("+(El)+")")[0].name="val"+(j+1)+"("+(El-1)+")";
	}    
}
//И само решение проблемы
for( i = El; i <= tableRows.length; i += 1 ) 
{ 
      for( j = 0; j < 12; j += 1 ) 
	{ 
document.getElementsByName("val"+(j+1)+"("+(i)+")")[0].name="val"+(j+1)+"("+(i-1)+")";
}


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