用javascript指定用户输入的渲染位置

问题描述 投票:0回答:1

我只是想做一个表单,让你选择用户的名字和密码显示在哪个框里。我的代码可以正常工作,但我很想知道如何重构它以减少重复性。我想过使用一个JS对象,但我不知道在这种情况下如何去做。任何帮助将被感激! 下面是CodePen的链接:(https:/codepen.ioTOOTCODERpenyLeagRq。)

   <html>
   <head>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width">
   <title>Which Box?</title>
   <style>

     .square{
   border: 1px solid black;
   width: 15rem;
   height: 15rem;
   float: left;
  }

  #formContainer {
   position: relative;
   top: 16rem;
   left: -45.5rem;
  }

 .boxTitle {
   text-align: center;
   margin-top: 1em;
 }

 .boxOutputContainer {
   text-align: center;
 }


   </style>
 </head>
 <body>
   <div class="square">
   <h1 class="boxTitle">BOX1</h1>
   <div class="boxOutputContainer">
     <div id="b1NameOutput"></div>
     <div id="b1PasswordOutput"></div>
   </div>
 </div>

 <div class="square">
   <h1 class="boxTitle">BOX2</h1>
   <div class="boxOutputContainer">
     <div id="b2NameOutput"></div>
     <div id="b2PasswordOutput"></div>
   </div>
 </div>

 <div class="square">
   <h1 class="boxTitle">BOX3</h1>
   <div class="boxOutputContainer">
     <div id="b3NameOutput"></div>
     <div id="b3PasswordOutput"></div>
   </div>
 </div>

 <div id="formContainer">
   <form>
     <label for="name">Name:</label>
     <input required type="text" id="name">

     <label for="name">Password:</label>
     <input required type="text" id="password">

     <label for="boxSelect">Which box?</label>
     <select id="boxSelect">
       <option value="1">1</option>
       <option value="2">2</option>
       <option value="3">3</option>
     </select>
     <input type="submit" id="submitBtn">
   </form>
 </div>

 <script>
   var submitBtn = document.querySelector("#submitBtn");
 var resetBtn = document.querySelector("#resetBtn");
 submitBtn.addEventListener("click", function(){
   event.preventDefault();
   var name = document.querySelector("#name");
   var password = document.querySelector("#password");
   var boxSelect = document.querySelector("#boxSelect");
   var b1NameOutput = document.querySelector("#b1NameOutput");
   var b1PasswordOutput = document.querySelector("#b1PasswordOutput");
   var b2NameOutput = document.querySelector("#b2NameOutput");
   var b2PasswordOutput = document.querySelector("#b2PasswordOutput");
   var b3NameOutput = document.querySelector("#b3NameOutput");
   var b3PasswordOutput = document.querySelector("#b3PasswordOutput");
     if(boxSelect.value == 1){
       b1NameOutput.innerHTML = "<p>"+name.value+"</p>";
       b1PasswordOutput.innerHTML = "<p>"+password.value+"</p>";
     }else if(boxSelect.value == 2){
       b2NameOutput.innerHTML = "<p>"+name.value+"</p>";
       b2PasswordOutput.innerHTML = "<p>"+password.value+"</p>";
     }else if(boxSelect.value == 3){
       b3NameOutput.innerHTML = "<p>"+name.value+"</p>";
       b3PasswordOutput.innerHTML = "<p>"+password.value+"</p>";
   }});


 </script>
 </body>
 </html>

javascript html css dom
1个回答
0
投票

你可以简单地将选择的值与 id的如下。

var submitBtn = document.querySelector("#submitBtn");
var resetBtn = document.querySelector("#resetBtn");
submitBtn.addEventListener("click", function(){
  event.preventDefault();
  var boxSelect = document.querySelector("#boxSelect");
  document.querySelector(`#b${boxSelect.value}NameOutput`).innerHTML = "<p>"+document.querySelector("#name").value+"</p>";
  document.querySelector(`#b${boxSelect.value}PasswordOutput`).innerHTML = "<p>"+document.querySelector("#password").value+"</p>";
});

0
投票

我看到有人抢先一步说出了答案 但这里有另一个容易重构的选择。

var submitBtn = document.querySelector("#submitBtn");
var resetBtn = document.querySelector("#resetBtn");
submitBtn.addEventListener("click", function(){
  event.preventDefault();
  var name = document.querySelector("#name");
  var password = document.querySelector("#password");
  var boxSelect = document.querySelector("#boxSelect");

  var nameId = `#b${boxSelect.value}NameOutput`;
  var passwordId = `#b${boxSelect.value}PasswordOutput`;

  var nameOutput = document.querySelector(nameId);
  nameOutput.innerHTML = "<p>"+name.value+"</p>";

  var passwordOutput = document.querySelector(passwordId);
  passwordOutput.innerHTML = "<p>"+password.value+"</p>";

});
© www.soinside.com 2019 - 2024. All rights reserved.