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.
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)
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).
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'; // -1Para 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);