简体   繁体   English

根据 Html 中用户选择的编号激活块

[英]Activate blocks according to user selected number in Html

I have to make a simple web page where a user selects number of friends and according to the input, invisible boxes are triggered, like if user selected 3, 3 boxes will appear where user enters the friends name.我必须制作一个简单的 web 页面,在该页面中,用户选择朋友的数量并根据输入触发不可见的框,例如如果用户选择了 3,则在用户输入朋友姓名的位置会出现 3 个框。 I have made the Html code, but only 1 box is appearing everytime.我制作了 Html 代码,但每次只出现 1 个盒子。 I'm pretty new in Html, any help will be appreciated.我是 Html 的新手,任何帮助将不胜感激。

 function CheckColors(val) { var element = document.getElementById('color'); if (val == 'pick a color' || val == '1') element.style.display = 'block'; elif(val == 'pick a color' || val == '2') element.style.display = 'block'; element.style.display = 'block'; elif(val == 'pick a color' || val == '3') element.style.display = 'block'; element.style.display = 'block'; element.style.display = 'block'; elif(val == 'pick a color' || val == '4') element.style.display = 'block'; element.style.display = 'block'; element.style.display = 'block'; element.style.display = 'block'; elif(val == 'pick a color' || val == '5') element.style.display = 'block'; element.style.display = 'block'; element.style.display = 'block'; element.style.display = 'block'; element.style.display = 'block'; }
 <select name="color" onchange='CheckColors(this.value);'> <option>How Many Friends Do You Have?</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="text" name="color" id="color" style='display:none;' />

create a box container, and then create given number of boxes dynamically:创建一个盒子容器,然后动态创建给定数量的盒子:

 function createBox() { const box = document.createElement("input"); box.type = "text"; box.className = "box"; return box; } function CheckColors(val) { var element = document.querySelector('.box-container'); element.innerHTML = ''; console.log(val) for (let i = 0; i < val; i++) { element.appendChild(createBox()); } }
 .box-container { padding: 1rem; }.box-container.box { padding: .5rem; border: 1px solid lightblue; margin-right: .3rem; }
 <select name="color" onchange='CheckColors(this.value);'> <option>How Many Friends Do You Have?</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <div class="box-container"></div>

First, you have only 1 input element to show in your HTML code .首先,您的HTML code中只有1输入元素要显示。 After that, you need to change your elif for else if in the if statement .之后,您需要在if statement中将您的elif更改为else if

 var select = document.getElementById("select"); select.addEventListener("change", function() { var val = select.value; var element = document.getElementsByClassName('color'); if (val == 'pick a color' || val == '1') { element[0].style.display = 'block'; } else if (val == 'pick a color' || val == '2') { element[0].style.display = 'block'; element[1].style.display = 'block'; } else if (val == 'pick a color' || val == '3') { element[0].style.display = 'block'; element[1].style.display = 'block'; element[2].style.display = 'block'; } else if (val == 'pick a color' || val == '4') { element[0].style.display = 'block'; element[1].style.display = 'block'; element[2].style.display = 'block'; element[3].style.display = 'block'; } else{ element[0].style.display = 'block'; element[1].style.display = 'block'; element[2].style.display = 'block'; element[3].style.display = 'block'; element[4].style.display = 'block'; }});
 <select id="select" name="color"> <option>How Many Friends Do You Have?</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="text" name="color" class="color" style='display:none;' /> <input type="text" name="color1" class="color" style='display:none;' /> <input type="text" name="color2" class="color" style='display:none;' /> <input type="text" name="color3" class="color" style='display:none;' /> <input type="text" name="color4" class="color" style='display:none;' />

Lets try to achieve the things dynamically instead making multiple if...else blocks.让我们尝试动态地实现这些事情,而不是制作多个if...else块。

-> Create a new div called input-block -> 创建一个名为input-block的新 div

-> Then make for loop as per the value selected from select box. -> 然后根据从 select 框中选择的值进行循环。

-> Create new input element. -> 创建新的输入元素。

-> Append every new input elements inside the input block. -> Append 输入块内的每个新输入元素。

Assign each input box a unique id like input.id = friend-${i+1};为每个输入框分配一个唯一的 id,如input.id = friend-${i+1}; to get the reference unique.获得唯一的参考。

 function CheckColors(val){ const element = document.getElementById('color'); const inputBlock = document.getElementById('input-block'); inputBlock.innerHTML = ''; for(let i = 0; i < val; i++){ const input = document.createElement('input'); input.id = `friend-${i+1}`; input.placeholder = `Friend ${i+1}`; inputBlock.append(input) } }
 #input-block input { padding: 5px; margin: 5px; }
 <select name="color" onchange='CheckColors(this.value);'> <option>How Many Friends Do You Have?</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <br /> <br /> <div id="input-block"> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM