[英]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.