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

121
Vistas
Fórmula de punto medio que devuelve una salida extraña en JS

así que tengo el siguiente código:

 function domidpoint() { var x1 = document.getElementById("x1").value; var y1 = document.getElementById("y1").value; var x2 = document.getElementById("x2").value; var y2 = document.getElementById("y2").value; var midpointx, midpointy; if(x1, y1, x2, y2 != '') { midpointx = (x1 + x2) / 2; midpointy = (y1 + y2) / 2; document.getElementById("result").innerHTML = midpointx.toString() + "," + midpointy.toString(); } }

pero cuando lo ejecuto con los valores, (-6,8),(6,-7) que deberían devolver un punto medio de (0,0.5) obtengo el resultado -33,NaN. ¿Alguien tiene una idea de por qué es esto? Soy bastante nuevo en javascript, así que si estoy haciendo algo estúpido, no dudes en decírmelo.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

hay dos problemas con tu código el primero es que tienes un error de sintaxis en if(x1, y1, x2, y2 != '') debes hacer cada check solo x1 != '' y separarlos con el operador AND && ver el código de abajo

el segundo problema es que document.getElementById("x1").value devuelve una string , no un number , por lo que debe convertirlo en un número antes de usarlo para evitar comportamientos no deseados

 function domidpoint() { var x1 = document.getElementById("x1").value; var y1 = document.getElementById("y1").value; var x2 = document.getElementById("x2").value; var y2 = document.getElementById("y2").value; var midpointx, midpointy; if (x1 != "" && x2 != "" && y1 != "" && y2 != "") { midpointx = (Number(x1) + Number(x2)) / 2; midpointy = (Number(y1) + Number(y2)) / 2; document.getElementById("result").innerHTML = midpointx.toString() + "," + midpointy.toString(); } }

por fin parece que eres nuevo en javascript, así que aquí hay dos excelentes recursos para ayudarte a comprender los conceptos básicos de javascript

https://www.youtube.com/watch?v=W6NZfCO5SIk --- (video) https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics --- (artículo)

about 4 years ago · Juan Pablo Isaza Denunciar

0

value devuelve una cadena; usar + significa suma para números, pero concatenación para cadenas. (Vea qué son x1+x2 e y1+y2 para ver la diferencia).

about 4 years ago · Juan Pablo Isaza Denunciar

0

Cuando lee algo de DOM, devuelve una cadena y cuando intenta realizar cualquier acción en él. Algo como esto sucede:

 const midPointX = '-66'/2; const midPointY = '8-7'/2;

El primer punto sigue siendo válido, por eso obtienes -33. Si cambia el orden a (x2 + x1) obtendrá NaN.

'8-7' no es un número válido, por eso obtienes NaN.

NOTA: Realiza una operación aritmética (-,*,/,%) en una cadena, excepto la suma (+) .

 '1' + '2'; // '12' '1' - '2'; // -1

Para resolver esto, debe convertir una cadena en un número.

 const x1 = '-6', y1 = '8', x2 = '6', y2 = '-7'; const midPointX = (+x1 + +x2) / 2; const midPointY = (+y1 + +y2) / 2; console.log(midPointX, midPointY);

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