Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

251
Views
Javascript "document.write" confusión

Soy nuevo en JavaScript y es posible que haya hecho una pregunta tonta ... Pero el resultado devuelto por el código a continuación me confundió mucho. No estoy seguro de por qué solo la primera oración muestra el valor de i y estaba en el último número de 3.

También estoy confundido cuando se ejecuta el código document.write('<h1>' + i + msg + '<h1>') , ¿por qué no escribió simplemente el valor agregado de la variable 'msg'? El valor de msg no se eliminó y debería contener tanto el primer como el segundo valor pasados, ¿no es así? Esto me parece un poco confuso ya que llegué con algunos conocimientos de Python y no funcionó de la misma manera.

 var scores = [24, 32, 47]; var scores = [24, 32, 47]; var scores = [24, 32, 47]; var arrayLength = scores.length; var roundNumber = 0; var msg = ''; var i; for (i = 0; i < arrayLength; i++) { roundNumber = i + 1; msg += ' Round ' + roundNumber + ': '; msg += scores[i] + '<br>'; } document.write('<h1>' + i + msg + '<h1>')

Resultado devuelto por el html:

 3 Round 1: 24 Round 2: 32 Round 3: 47

Mi resultado esperado:

 0 Round 1: 24 1 Round 2: 32 2 Round 3: 47
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Solo necesita agregar la i al mensaje en el ciclo en lugar de después, como:

 var scores = [24, 32, 47]; var arrayLength = scores.length; var roundNumber = 0; var msg = ''; var i; for (i = 0; i < arrayLength; i++) { roundNumber = i + 1; msg += i +' Round ' + roundNumber + ': '; msg += scores[i] + '<br>'; } document.write('<h1>' + msg + '<h1>')

about 4 years ago · Juan Pablo Isaza Report

0

Usted emite i solo una vez. Es por eso que solo ve el último valor.

Debe agregarlo a msg dentro del bucle.

 var scores = [24, 32, 47]; var scores = [24, 32, 47]; var scores = [24, 32, 47]; var arrayLength = scores.length; var roundNumber = 0; var msg = ''; var i; for (i = 0; i < arrayLength; i++) { roundNumber = i + 1; msg += i + ' Round ' + roundNumber + ': '; msg += scores[i] + '<br>'; } document.write('<h1>' + msg + '<h1>')

about 4 years ago · Juan Pablo Isaza Report

0

document.write se ejecuta después del final del bucle.

Muestra todo el contenido agregado de msg . Ese no es el problema.

Lo que va mal es el uso de i : solo lo usa una vez en la salida, después de que finaliza el ciclo. Por lo tanto, lo que ve solo tendrá el valor final que tenía cuando finalizó el ciclo, por lo tanto, muestra 3 y lo hace solo una vez.

A diferencia de msg , que está agregando cada vez que se ejecuta el ciclo (porque += agrega contenido nuevo a la variable existente), el valor de i se sobrescribe con un nuevo valor cada vez que se ejecuta el ciclo (eso es lo que hace i++ en la sintaxis for ).

Para que haga lo que desea, simplemente necesita incorporar el valor i en msg a medida que avanza.

 var scores = [24, 32, 47]; var msg = ''; for (let i = 0; i < scores.length; i++) { msg += i + ' Round ' + (i+1) + ': ' + scores[i] + '<br>'; } document.write('<h1>' + msg + '<h1>')

PD: también simplifiqué un poco el código: no está claro por qué declaró la misma matriz de scores 3 veces con el mismo valor, y arrayLength y roundNumber no necesitan existir como variables separadas, y ciertamente no como variables que tienen alcance fuera del ciclo. i necesito un alcance fuera del bucle.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!