简体   繁体   中英

How can I create a space line (like a br) when user clicks on button?

I need a javascript function or really anything so when the user put names in the input type text, it puts the text on a paragraph below #final and so on continuosly adding a space whenever the user clicks the button.

 function ir() { let nombre = document.getElementById("nombre").value; let monto = document.getElementById("monto").value; let total = document.getElementById("total"); let final = document.getElementById("final"); let aporte = document.getElementById("aporte"); for (i = 0; i < monto; i++) { total.innerText = ` ${nombre} : ${monto}`; }; if (total > 0) { monto + monto } final.innerHTML = `${monto}`; aporte.innerHTML = `${monto}`; };
 <html> <p>Nombre</p> <input type="text" id="nombre"> <br> <p>Monto</p> <input type="number" id="monto"> <br> <button onclick="ir()">Enviar</button> <br> <p>Total: <span id="final"></span> </p> <div id="total"> </div> <p>A cada uno le toca aportar: <span id="aporte"></span></p> </div> </html>

How can I do it?

Welcome to StackOverflow,

Try this function:

function ir() {
  // Set everything to const because they don't change and it's good practise
  const nombre = document.getElementById("nombre").value;

  // Monto changes below, so we can use LET!!
  let monto = document.getElementById("monto").value;

  const total = document.getElementById("total");
  const final = document.getElementById("final");
  const aporte = document.getElementById("aporte");

  // Create new element under total
  const lineBreak = document.createElement("br");
  let newTotal = document.createTextNode(` ${nombre} : ${monto} `);
  total.appendChild(lineBreak);
  total.appendChild(newTotal);


  // Set monto to monto + the value already there
  // Use Number to make it number (without Number it's string, 1+2 = 12 and not 3)
  monto = Number(monto) + Number(final.innerHTML);

  final.innerHTML = `${monto}`;
  aporte.innerHTML = `${monto}`;
};

What it does is it creates a new element beneath total and updates it each time the user clicks the button.

The total is also updated too...

Is this what you wanted? I hope it helped :)

One potential way to do this would be to check the values of nombre and monto . If they are empty (or just spaces), we can create and append a <br> element.

if (monto.trim() == "" || nombre.trim() == "") {
  let lineBreak = document.createElement("BR");
  total.appendChild(lineBreak);

I'm not exactly sure which element you wanted to append this to, so change it accordingly to element.appendChild(createdElementName) .

Hope I was able to help!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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