Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

245
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda