javascript - 根据下拉选择Javascript显示/隐藏多个div

标签 javascript html

我正在尝试创建一个表单,该表单将根据在下拉菜单中选择的内容显示更多字段。如果选择了 1 位客人,则会出现 1 个表格。如果为 2,则出现 2 个表格,依此类推。

我已经设法让第一个 Div (guestFormOne) 显示/隐藏,具体取决于是否选择了 1 位 guest ,但我正在努力寻找一种解决方案来实现最多 6 位 guest 。

这是我目前所拥有的:

HTML

    <h4>Number of Guests</h4>
<select onchange="numofGuests()">
  <option>Select number of guests</option>
  <option id="guestCountOne">1</option>
  <option id="guestCountTwo">2</option>
  <option id="guestCountThree">3</option>
  <option id="guestCountFour">4</option>
  <option id="guestCountFive">5</option>
  <option id="guestCountSix">6</option>
</select>

<div id="guestFormOne">
  <h4>Guest 1</h4>
  <input type="text" placeholder="Name">
  <select id="guest1_meal">
   <option>Meal Choice</option>
   <option>Buffet</option>
   <option>Gluten Free</option>
   <option>Dairy Free</option>
   <option>Vegan</option>
  </select>

  <select id="guest1_age">
   <option>Age</option>
   <option>Adult</option>
   <option>Child under 5</option>
   <option>Child 6 - 12</option>
  </select>

  <input type="text" placeholder="Allergies?">
</div>

<div id="guestFormTwo">
  <h4>Guest 2</h4>
  <input type="text" placeholder="Name">
  <select id="guest2_meal">
   <option>Meal Choice</option>
   <option>Buffet</option>
   <option>Gluten Free</option>
   <option>Dairy Free</option>
   <option>Vegan</option>
  </select>

  <select id="guest2_age">
   <option>Age</option>
   <option>Adult</option>
   <option>Child under 5</option>
   <option>Child 6 - 12</option>
  </select>

  <input type="text" placeholder="Allergies?">
</div>

Javascript

   function numofGuests() {
      if (document.getElementById("guestCountOne").selected) {
        document.getElementById("guestFormOne").style.display = "block";
      } else {
        document.getElementById("guestFormOne").style.display = "none";
      }
    }

帮助将不胜感激,因为我觉得我一直在努力让它发挥作用。

最佳答案

您可以动态添加任意数量的内容:

function numofGuests(val) {
    document.getElementById('guestFormOne').innerHTML = "";
    for (i = 0; i < parseInt(val.value); i++) { 
        document.getElementById('guestFormOne').innerHTML += '<h4>Guest '+(i+1)+'</h4><input type="text" placeholder="Name"><select  id="guest'+(i+1)+'_meal"><option>Meal Choice</option> <option>Buffet</option><option>Gluten Free</option><option>Dairy Free</option><option>Vegan</option></select><select id="guest'+(i+1)+'_age"><option>Age</option><option>Adult</option><option>Child under 5</option><option>Child 6 - 12</option></select><input type="text" placeholder="Allergies?">';
    }      
}    
<h4>Number of Guests</h4>
<select onchange="numofGuests(this)">
  <option>Select number of guests</option>
  <option>1</option>
  <option>2</option>
  <option>3</option>
  <option>4</option>
  <option>5</option>
  <option>6</option>
</select>

<div id="guestFormOne"></div>

关于javascript - 根据下拉选择Javascript显示/隐藏多个div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48967118/

相关文章:

javascript - 引用错误: value is not defined CloudFunction

java - Spring MVC 如何从 Model 获取数据以及为什么每次提交表单后都会创建 modelAttribute 对象?

javascript - Canvas 上的模糊正方形。该怎么办?

javascript - 未捕获的类型错误 : links is not a function at HTMLButtonElement. onclick

javascript - mongoose 检查 id 是否存在,但该 id 嵌套在数组中

Javascript 在刷新时显示加载器图标

JQuery/Javascript 中的 PHP 变量

javascript - 使用 jQuery 测试 html lang 属性

html - 我如何将这个 &lt;iframe&gt; 放在网页上

javascript - 从 javascript 对象中删除空字符串或未定义的属性