Цитата: 
	
 В спецификации HTML5 сказано, что нет никаких ограничений на имена, которые можете использовать в атрибуте класса, однако рекомендуется использовать значения, которые описывают сущность/природу содержимого, а не такие значения, которые описывают желаемое представление контента.(https://www.w3.org/TR/html52/dom.htm...f-global-class) Т. е. в том примере с Bootstrap лучше так не делать, хотя можно. Например, лучше <div class="material-totals"></div>, а не <div class="alert alert-primary text-center" id="totals"><strong>1</strong></div></div> Также настоятельно рекомендуется рассматривать элемент <div> как крайнюю меру, когда уже никакой другой элемент не подходит. Использование более подходящих элементов вместо элемента <div> обеспечивает лучшую доступность и код, который легче поддерживать. (https://www.w3.org/TR/html52/groupin...he-div-element)  | 
	
		
 Цитата: 
	
  | 
	
		
 Вроде все получилось, но почему то выскакивает ошибка 
	Uncaught TypeError: Cannot set property 'textContent' of null и Uncaught TypeError: Cannot set property 'name' of null Переделал этот код <form action="#" method="POST" class="form-horizontal"> <div class="param mt-3"> <div class="row"> <div class="col-12"><div class="alert alert-primary text-center" id="totals"><strong>1</strong></div></div> <div class="col-12"><textarea rows="5" class="form-control mb-3 rabota" type="text" name="rabota1" placeholder="Наименование видов работ"></textarea></div> </div> <div class="row"> <div class="col-12 mb-2 text-center"><strong>Материал</strong></div> </div> <div class="row"> <div class="col-12 mater"> <div class="row list" id="material_row"> <div class="col-8"><input class="form-control mb-3 mater_name" type="text" name="mater_name1[]" placeholder="Название"></div> <div class="col-2"><input class="form-control mb-3 mater_units" type="text" name="mater_units1[]" placeholder="Количество"></div> <div class="col-2"><input class="form-control mb-3 mater_price" type="text" name="mater_price1[]" placeholder="Цена за ед."></div> </div> </div> </div> <div class="row"> <div class="col-12"> <input id="add_material" class="btn btn-primary btn-lg btn-block" type="button" value="Добавить Материал"> </div> </div> <div class="row"><div class="col-12"><hr></div></div> </div> <div class="row" id="next"> <div class="col-6"> <input class="btn btn-primary btn-lg btn-block" type="button" value="Добавить поле" id="form_status_added"> </div> <div class="col-6"> <button name="updates" class="btn btn-primary btn-lg btn-block">Обновить</button> </div> </div> </form> 
var template = document.querySelector(".param").cloneNode(true);
addEventListener("click", ({ target }) => {
	switch(target.id) {
  	case "form_status_added":
    	var elemCount = document.querySelectorAll(".param").length + 1;
      var node = template.cloneNode(true);
      node.querySelector("#totals").textContent = elemCount;
      node.querySelector(".rabota").name = "rabota"+elemCount;
      node.querySelector(".mater_name").name = "mater_name"+elemCount+"[]";
      node.querySelector(".mater_units").name = "mater_name"+elemCount+"[]";
      node.querySelector(".mater_price").name = "mater_name"+elemCount+"[]";
      document.querySelector("#next").before(node);
    	break;
      
      case "add_material":
      var node = target.closest(".param").querySelector("#material_row:last-of-type");
      node.after(node.cloneNode(true));
    	break;
  }
});
И перенеся на сайт мне выдает ошибку ?m=edit:148 Uncaught TypeError: Cannot read property 'cloneNode' of null at ?m=edit:148 и ничего не работает  | 
	
		
 eLDeR, используйте jQuery коли он у вас и так есть, и вы в нем что-то можете. А этот код в общем-то не полный, в нем нет очистки значений клонируемых полей. А именование как было неудобным (querySelector(".rabota").name = "rabota"+elemCount), так и осталось. А именование других полей приведет к тому, что у вас наборы добавляемых полей (материалы) не будут соответствовать индексам добавляемых блоков (полей). 
	Ну возьмите простой php код, поместите в него форму с таким именованием полей и отправьте ее, чтобы убедится в том, что вы получите массив неудобный для обработки.  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
 Может хватит пустым красноречием заниматься? ;)  | 
	
		
 Цитата: 
	
 Цитата: 
	
  | 
	
		
 Цитата: 
	
 Так к чему выпендриваться, да еще предлагать React? Или вы это для меня его сватаете? Да нехрен мне он нужен, мне заняться больше нечем, как разводить демагогию что лучше, а что хуже.  | 
	
		
 Цитата: 
	
 Цитата: 
	
 eLDeR, Цитата: 
	
 Вот тоже самое, но при помощи React.js https://codepen.io/Malleys/pen/BeGBVL?editors=0010 Добавил удаление полей, материалов и сериализацию данных, вам только осталось написать реализацию отправки этих данных. (Сейчас выводит их в alert)  | 
	
		
 Цитата: 
	
  | 
| Часовой пояс GMT +3, время: 10:00. |