Как создать функцию javascript, которая динамически добавляет элементы html?

Я пытаюсь создать функцию javascript, которая добавляет новые элементы html с новыми идентификаторами для каждого элемента. например эта форма; Чтобы пользователь мог указать языки, на которых он может говорить, и свой уровень на каждом из них. Но он может добавить новый ввод для ввода других языков, если он говорит на многих.

<form id = "form">
Language spoken1: <input id = "language1">
Level: <input id = "level1">
<form>
<input type = "button" value = "add new language" id = "add" onclick = "myFunction">

Чтобы получить такой результат

<form id = "form">
Language spoken1: <input id = "language1">
Level: <input id = "level1">
Language spoken2: <input id = "language2">
Level: <input id = "level2">
<form>
<input type = "button" value = "add new language" id = "add" onclick = "myFunction">

И когда он отправит результат, подобный этому будет на странице

Разговорный язык1: английский, уровень: родной Разговорный язык2: испанский, уровень: хороший

Существует миллион технологий и способов добиться этого. Выберите один, попробуйте, а затем вернитесь с конкретной проблемой программирования, если вы столкнетесь с ней.

connexo 30.05.2019 00:54

Я новичок, братан, просто скажи мне тему этой технологии, и я скажу, это html dom, appendchild и setatribute? я пытаюсь

Sofiane 30.05.2019 01:34

Без серверной технологии, такой как вход на веб-сервер и базу данных, изменения, которые делает пользователь, теряются, как только он перезагружает страницу.

connexo 30.05.2019 07:40
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
3
78
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать document.getElementById("ID").innerHTML

document.getElementById("form").innerHTML='Language spoken1:<input id = "language1"> Level: <input id = "level1"><br> Language spoken2: <input id = "language2"> Level: <input id = "level2">'
<form id = "form">
 
</form>
<input type = "button" value = "add new language" id = "add" onclick = "myFunction">

это не сработало, братан, я буду больше изучать js и html dom, я просто был рад сделать это как можно скорее;)

Sofiane 30.05.2019 01:36
Ответ принят как подходящий

Каждый раз, когда вы нажимаете кнопку, он создает два элемента ввода, подсчитывает существующие входы и находит количество новых идентификаторов ввода. Я также добавил автофокус на ввод, после добавления... и кнопки удаления)

(function(){
  
let form = document.getElementById('form');

document.getElementById('add').addEventListener('click', function(){
  let lang  = document.createElement('input');
  let level = document.createElement('input');
  let number = document.querySelectorAll('#form input').length / 2 + 1;

  lang.id = 'language' + number;
  level.id = 'level' + number;

  lang.placeholder = 'Language spoken' + number;
  level.placeholder = 'Level';

  form.innerHTML += '<br>';
  form.appendChild(lang);
  form.appendChild(level);

  lang.focus();
});
  
document.getElementById('delete').addEventListener('click', function(){
  let inp = document.querySelectorAll('#form input');
  if (inp.length == 2){ return; }
  /* removing last two elements */
  inp[inp.length-1].remove();
  inp[inp.length-2].remove();

  let br = document.querySelectorAll('#form br');
  br[br.length-1].remove();
});
  
})();
#delete {
  color: white;
  background-color: #c00;
  border: 2px solid #c00;
  outline: none;
  cursor: pointer;
}
#form {white-space: inherit;}
input {margin: 2px 5px;}
<form id = "form">
  <input id = "language1" placeholder = "Language spoken1"><input id = "level1" placeholder = "Level">
</form>

<br>

<input type = "button" value = "add a new language" id = "add"> 
<input type = "button" value = "X" id = "delete">

Любые вопросы?)

Спасибо, братан☺ Это не 100%, но, по крайней мере, я могу пойти дальше и попробовать больше. Мне нужна кнопка submate или save, чтобы сохранить ее и отобразить входное значение в <ul> .... проще ли сделать такую ​​​​функцию на php или других бэкэндах? Я еще не дошел?

Sofiane 30.05.2019 15:29

Другие вопросы по теме