Добавить элементы управления HTML через javascript

Что-то ускользает от меня ... это кажется очевидным, но я не могу понять этого.

Я хочу добавить / удалить пару элементов управления HTML на странице (простой старый HTML), когда пользователь изменяет значение раскрывающегося списка. Примером может служить добавление или удаление текстового поля «количество гостей в этой комнате» для каждой (из некоторого количества) запрошенных комнат ...

Итак, если пользователь выбирает:

1 комната, есть одно текстовое поле

2 комнаты, есть два текстовых поля

3 комнаты, три текстовых поля

назад в 2 комнаты, два текстовых поля

и так далее ...

Поведение ключевого слова "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
0
11 404
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

для выбранного списка комнат добавьте обработчик события onchange, который будет отображать / скрывать текстовые поля.

<script>
  //swap $ with applicable lib call (if avail)
  function $(id){
    return document.getElementById(id);
  }
  function adjustTexts(obj){
    var roomTotal = 4;
    var count = obj.selectedIndex;
    //show/hide unrequired text boxes...
    for(var i=0;i<roomTotal;i++){
      if (i < count){
        $('room'+ (i+1)).style.display = 'block';
      } else {
        $('room'+ (i+1)).style.display = 'none';
      }
    }
  }
</script>


<select name = "rooms" onchange = "adjustTexts(this);">
  <option>1</option>
  <option>2</option>
  <option>3</option>
  <option>4</option>
</select>

<div id = "room1">
  <label>Room 1</label>:<input type = "text" name = "room1text"/>
</div>

<div id = "room2" style = "display:none;">
  <label>Room 2</label>:<input type = "text" name = "room2text"/>
</div>

<div id = "room3" style = "display:none;">
  <label>Room 3</label>:<input type = "text" name = "room3text"/>
</div>

<div id = "room4" style = "display:none;">
  <label>Room 4</label>:<input type = "text" name = "room4text"/>
</div>
Ответ принят как подходящий

Используя прямые DOM и Javascript, вы захотите изменить свойство InnterHtml объекта DOM, который будет содержать текстовые поля ... скорее всего, div. Это будет выглядеть примерно так:

var container = document.getElementById("myContainerDiv");
var html;
for(var i = 0; i < selectedRooms; i++)
{
    html = html + "<input type=text ... /><br />";
}
container.innerHtml = html;

Использование библиотеки Javascript, такой как jQuery, может немного упростить задачу:

var html;
for(var i = 0; i < selectedRooms; i++)
{
    html = html + "<input type=text ... /><br />";
}

$("#myContainerDiv").append(html);

Еще одна рекомендация для jQuery :)

Tony Arkles 09.11.2008 05:45

Ха! ... Я понял ... спасибо, что растрепал паутину и пушок.

brmore 09.11.2008 05:47

Нет проблем ... Я немного шокирован тем, что в субботу вечером оно было таким свежим :)

ckramer 09.11.2008 06:53

учитывая HTML:

<select name = "rooms" id = "rooms">
  <option value = "1">1 room</option>
  <option value = "2">2 rooms</option>
  <option value = "3">3 rooms</option>
</select>
<div id = "boxes"></div>

javascript:

document.getElementById('rooms').onchange = function() {
  var e = document.getElementById('boxes');
  var count = parseInt(document.getElementById('rooms').value);
  e.innerHTML = '';

  for(i = 1; i <= count; i++) {
    e.innerHTML += 'Room '+i+' <input type = "text" name = "room'+i+'" /><br />';
  } 
}

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