Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] valor NaN devuelto por js

Estas en el tema de valor NaN devuelto por js en el foro de Javascript en Foros del Web. hola como estan ante nada gracias por responder. mi problema es que js me devuelve un valor NaN y no se porque. cual podria ser ...
  #1 (permalink)  
Antiguo 06/02/2013, 08:35
 
Fecha de Ingreso: septiembre-2012
Ubicación: posadas
Mensajes: 53
Antigüedad: 11 años, 7 meses
Puntos: 0
valor NaN devuelto por js

hola como estan ante nada gracias por responder. mi problema es que js me devuelve un valor NaN y no se porque. cual podria ser el problema no entiendo mucho de js.

le estoy pasando una variable alojada en un <div> x ej 5.99 cuyo valor obtuve de una consulta en ajax y ahora ese valor lo quiero multiplicar en tiempo real pero me devuelve NaN (not a numbre). no se ojala puedan ayudarme. gracias
  #2 (permalink)  
Antiguo 06/02/2013, 09:05
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: valor NaN devuelto por js

Muestra el código que usas y la respuesta que obtienes de la petición Ajax.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 06/02/2013, 09:30
 
Fecha de Ingreso: septiembre-2012
Ubicación: posadas
Mensajes: 53
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: valor NaN devuelto por js

este es el script el cual multiplica

<script>
function calcula(operacion){
var cantidad = document.getElementById('CANTIDAD').value;
var precio = document.getElementById('PRECIO').innerHTML;
var decimal = parseFloat('precio');
var subtotal = cantidad * decimal
document.getElementById('SUBTOTAL').value = subtotal
}

</script>


ak la parte q envia al script

<td><div id="PRECIO" onKeyPress="calcula(this.value);"></div></td>// ak recibo el valor desde ajax
<td>&nbsp;</td>
<td><input type="text" name="CANTIDAD" id="CANTIDAD" value="" onChange="calcula()"></td>
<td>&nbsp;</td>
<td><input type="number" name="SUBTOTAL" id="SUBTOTAL" value=""></td>

si necesitas algo mas pedime. los valores q tengo son 4.00 , 5.99 , 10.50
  #4 (permalink)  
Antiguo 06/02/2013, 10:06
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: valor NaN devuelto por js

Cita:
Iniciado por faseb Ver Mensaje
este es el script el cual multiplica

<script>
function calcula(){
var cantidad = document.getElementById('CANTIDAD').value;
var precio = document.getElementById('PRECIO').innerHTML;
var decimal = parseFloat('precio');
var subtotal = cantidad_decimal * decimal
document.getElementById('SUBTOTAL').value = subtotal
}

</script>


ak la parte q envia al script

<td><div id="PRECIO" onKeyPress="calcula(this.value);"></div></td>// ak recibo el valor desde ajax
<td>&nbsp;</td>
<td><input type="text" name="CANTIDAD" id="CANTIDAD" value="" onChange="calcula()"></td>
<td>&nbsp;</td>
<td><input type="number" name="SUBTOTAL" id="SUBTOTAL" value=""></td>

si necesitas algo mas pedime. los valores q tengo son 4.00 , 5.99 , 10.50
tenés una gran confusión
esto
onKeyPress="calcula(this.value)"
en un div no se ejecuta

los parseFloat tenés que hacércelos a los valores (del div id="PRECIO" y el input id="CANTIDAD"), pero como estos valores los estás poniendo en sendas variables, el parseFLoat en definitiva se hace a las variables, que son cantidad y precio, sin las comillas !!! El parámetro operacion carece de sentido, al menos en lo que proponés
El evento a utilizar es onkeyup para este caso, en definitiva
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <script type="text/javascript">
  7. //<![CDATA[
  8.  
  9. function calcula(operacion){
  10. var cantidad = document.getElementById('CANTIDAD').value;
  11. var cantidad_decimal = parseFloat(cantidad);
  12. var precio = document.getElementById('PRECIO').innerHTML;
  13. var decimal = parseFloat(precio);
  14. var subtotal = cantidad * decimal
  15. document.getElementById('SUBTOTAL').value = subtotal
  16. }
  17.  
  18. //]]>
  19. </head>
  20. <tr>
  21. <td>
  22. <div id="PRECIO">5</div>
  23. </td>
  24. <td>&nbsp;</td>
  25. <td><input type="text" name="CANTIDAD" id="CANTIDAD" value="" onkeyup="calcula()" /></td>
  26. <td>&nbsp;</td>
  27. <td><input type="text" name="SUBTOTAL" id="SUBTOTAL" value="" /></td>
  28. </tr>
  29. </body>
  30. </html>


Te recomiendo que empieces con algún buen manual de javascript
SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 06/02/2013, 10:54
 
Fecha de Ingreso: septiembre-2012
Ubicación: posadas
Mensajes: 53
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: valor NaN devuelto por js

hola la verdad gracias por tu aporte pero te paso a explicar. antes usaba 2 input uno para precio y otro para cantidad y el js me andaba de lujo pero ingresaba todo manual. ahora debo usar el div para recibir el precio a traves de ajax o algo parecido para poder obtener el precio al seleccionar un producto osea esto

<td><select name="ID_PROD" value="" onBlur="Mostrarprecio(this.value);">
<?php
$temp=mysql_query('
select DESCRIPCION, COD_PROD
from productos
order by DESCRIPCION');
while ($temp_=mysql_fetch_row($temp)){
echo '<option value="'.$temp_[1].'">'.$temp_[0].'
</option>';}
?>
</select>
</td>

con esto obtengo el id de producto que lo necesito, a partir de ak a traves de ajax obtengo el precio a traves del ID. si hay otra forma de obtener el precio bienvenido sea. entonces el div es necesario para obtener el valor consultado a traves de ajax, lo q no se es si es posible obtener dicho valor en un input si se puede re bien. sino no se.


ak mi codigo ajax esto no entiendo mucho lo tenia de ejemplo y lo modifique

function objetoAjax(){
var xmlhttp=false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}

if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function Mostrarprecio(datos){
divResultado = document.getElementById('miprov');
divResultado.innerHTML = '<img src="/ajax-loader.gif"/>';
divResultado2 = document.getElementById('miloc');
divResultado2.innerHTML = '<img src="/ajax-loader.gif"/>';

ajax=objetoAjax();
ajax.open("GET", datos);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
var cadenaresultado = ajax.responseText.split("<A99WTY1414BR7BM>");
divResultado.innerHTML = cadenaresultado[0];
divResultado2.innerHTML = cadenaresultado[1];
eval(cadenaresultado[2]);
}
}
ajax.send(null)
}


function Mostrarprecio(datos){


divResultado = document.getElementById('PRECIO');

divResultado.innerHTML = '<img src="/cargando.gif"/>';
ajax=objetoAjax();

ajax.open("GET", "/busquedaprec.php?buscar="+datos);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
var cadenaresultado = ajax.responseText;
divResultado.innerHTML = cadenaresultado;

}
}
ajax.send(null)


}
  #6 (permalink)  
Antiguo 06/02/2013, 11:07
 
Fecha de Ingreso: septiembre-2012
Ubicación: posadas
Mensajes: 53
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: valor NaN devuelto por js

emprear modifique lo que me pusiste pero sigue tirando NaN
  #7 (permalink)  
Antiguo 06/02/2013, 11:08
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: valor NaN devuelto por js

No hay problema si usas un div ó un input text (podés darle el atributo "readonly" si no queré que sea editable), siempre y cuando del div extraigas innerHTML y del input el value,
Ahora, el código que presentás ahora es algo completamente diferente, mis observaciones (que ya sea una cosa a la otra) vas a tener que tener en cuenta, son a efectos de poder realizar la suma. Ajax nada tiene que ver con eso, tu título es lo suficientemente claro
Cita:
valor NaN devuelto por js


y a eso se limita mi solución
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #8 (permalink)  
Antiguo 06/02/2013, 11:15
 
Fecha de Ingreso: septiembre-2012
Ubicación: posadas
Mensajes: 53
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: valor NaN devuelto por js

claro si modifique lo me diste pero = sigue mostrando NaN. claro buscando llegue a la conclusion de q ajax no era mi problema pero si el js que no me tira un valor numerico y ahi es que no entiendo, por eso el titulo. si tenes alguna otra idea te lo agradeceria
  #9 (permalink)  
Antiguo 06/02/2013, 11:30
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: valor NaN devuelto por js

Se te ocurrió tomarte el trabajo de reproducir mi código

ingresá un número en el primer campo, entero o decimal
http://foros.emprear.com/javascript/multiplic_nan.html

__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #10 (permalink)  
Antiguo 06/02/2013, 11:47
 
Fecha de Ingreso: septiembre-2012
Ubicación: posadas
Mensajes: 53
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: valor NaN devuelto por js

ok si probe pero el div ese tiene que ser variable no fijo a eso voy ya probe con el 5 como me diste pero no es asi como debe ser sino q debe ser traido desd ajax. gracias =.

eso del CDTA es necesario??

es como si al no poner un valor fijo al div me pasa como si fuera vacio al js entonces me da NaN

Última edición por faseb; 06/02/2013 a las 12:03
  #11 (permalink)  
Antiguo 06/02/2013, 16:48
 
Fecha de Ingreso: septiembre-2012
Ubicación: posadas
Mensajes: 53
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: valor NaN devuelto por js

nadie tiene idea porque puede ser que pase lo del NaN
  #12 (permalink)  
Antiguo 06/02/2013, 17:16
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: valor NaN devuelto por js

so no cambia nada, son 2 cosas distintas, primero tenés que asegurarte que tu ajax ponga en el div resultados un número (pero hasta entonces será una cadena)

luego tu función que realiza la operación debe convertir ese valor (cadena)en un número operable matemáticamente hablando, para eso le haces parseFloat ó parseInt a la variable obtenida

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #13 (permalink)  
Antiguo 06/02/2013, 17:33
 
Fecha de Ingreso: septiembre-2012
Ubicación: posadas
Mensajes: 53
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: valor NaN devuelto por js

lo tengo asi como me pasaste

<script type="text/javascript">
//<![CDATA[

function calcula(){
var cantidad = document.getElementById('CANTIDAD').value;
var cant = parseFloat(cantidad);
var precio = document.getElementById('PRECIO').innerHTML;
var prec = parseFloat(precio);
var subtotal = cant * prec;
var stotal = parseFloat(subtotal);//por las dudas
document.getElementById('SUBTOTAL').value = stotal
}

//]]>
</script>

devuelve NaN el subtotal.... me pasa el valor en el div se muestra x ej 5.99 si lo pongo fijo anda sino da NaN. gracias
  #14 (permalink)  
Antiguo 07/02/2013, 06:32
 
Fecha de Ingreso: septiembre-2012
Ubicación: posadas
Mensajes: 53
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: valor NaN devuelto por js

como puedo imprimir el valor devuelto por ajax xq a mi me muestra el valor pero no se si es el mismo que le pasa a js

Etiquetas: js
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:05.