Autor Tema: código JavaScript devuelve undefined para valor numérico por qué motivo CU01122E  (Leído 1982 veces)

gterrasi.25

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Buenas! les escribo ya que presento problemas para que la funcion CalculoImpuesto (nombre que le puse yo a la funcion) devuelva un valor al invocarla(me devuelve 'undefined') alguien me podria ayudar por favor? Yo no le encuentro errores a mi código, y el ejercicio lo extraje de la guia de javascript de esta dirección:

https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=800:funciones-javascript-concepto-parametros-argumentos-y-tipos-paso-por-valor-return-ejemplo-cu01122e&catid=78&Itemid=206

Código: [Seleccionar]
<!DOCTYPE html> <!--PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--! si vas a crear javascript-->
  <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <!--usa esta linea de codigo para resolver lo de los acentos (parece que tiene que ver con el valor utf-8 de charset)-->
        <title>Gerlando Terrasi</title>

<link rel="stylesheet" type="text/css" href="portstyle.css"/>
<script src="https://npmcdn.com/vue/dist/vue.js"></script>
//Ahora: crear la funcion ObtenerImporteConImpuestos el cual te da el importe con Impuestos para cada tipo de producto (1,2 y 3)
do {
I = prompt('Introduzca el importe sin impuestos (valor numérico)','No digas 0');
if (I<=0){
alert('Valor inadmisible, debe ser positivo. Intenta con otro valor');
continue
}
a = prompt('Introduzca el tipo de producto (solo valores 1,2 ó 3)');
if (a!=1 && a!=2 && a!=3){
alert('Valor inadmisible, debe ser 1,2 ó 3. Intenta con otro valor');

}

} while (I<=0 && a!=1 && a!=2 && a!=3)
parseInt(a);
parseFloat(I);
//A continuación, creamos la función:
function CalculoImpuesto(I,a) {
  var r;
    switch (a) {
case 1:
  r= I*1.21; break
case 2:
  r=I*1.1; break
case 3:
  r=I*1.05; break
}
   return r
}
var r;
r=CalculoImpuesto(I,a);
alert(r);
« Última modificación: 22 de Marzo 2020, 21:12 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Re:ayuda!! problemas para devolver valor con la funcion
« Respuesta #1 en: 17 de Marzo 2020, 20:49 »
Buenas, es importante que para crear hilos y escribir código sigas las indicaciones que se dan en https://aprenderaprogramar.com/foros/index.php?topic=1460.0 Debes incluir en el título el código del ejercicio para poder localizarlo, y pegar el código como se indica.

En tu código incluyes un script a una url npmcdn... ¿con qué finalidad?

gterrasi.25

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Devolución de valores de funciones Javascript
« Respuesta #2 en: 21 de Marzo 2020, 22:18 »
Ok de acuerdo. He aquí el código modificado según las instruccione. Ogramar, el script con la URL npmcdn lo retiré (No es necesario tenerla en el código)

Código: [Seleccionar]

<!DOCTYPE html>
  <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title>Gerlando Terrasi</title>

<link rel="stylesheet" type="text/css" href="portstyle.css"/>
       <script type="text/javascript">//Ahora: crear la funcion
                   ObtenerImporteConImpuestos el cual te da el importe con Impuestos para
                   cada tipo de producto (1,2,3)
do {
I = prompt('Introduzca el importe sin impuestos (valor
                                numérico)','No digas 0');
if (I<=0){
alert('Valor inadmisible, debe ser positivo. Intenta con otro
                                   valor');
continue
}
a = prompt('Introduzca el tipo de producto (solo valores 1,2 ó
                                      3)');
if (a!=1 && a!=2 && a!=3){
alert('Valor inadmisible, debe ser 1,2 ó 3. Intenta con otro
                                        valor');

}

} while (I<=0 && a!=1 && a!=2 && a!=3)
parseInt(a);
parseFloat(I);
//A continuación, creamos la función:
function CalculoImpuesto(I,a) {
  var r;
    switch (a) {
case 1:
  r= I*1.21; break
case 2:
  r=I*1.1; break
case 3:
  r=I*1.05; break
}
   return r
}
var r;
r=CalculoImpuesto(I,a);
alert(r);
</script>
               </head>
    <body>
   <p>Hola como estas?</p>
    </body>
  </html>
 

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Buenas, en el código que has planteado has supuesto que parseInt(a); y parseFloat(I); modifican los valores de a y de I, pero en realidad no es así. Necesitas hacer a=parseInt(a); e I=parseFloat(I); para que los valores queden modificados. Con ese cambio parece que ya funciona. No obstante, deberías mejorar el orden en el código y la forma de nombrar variables. Estás usando una variable r tanto como resultado local de una función como para almacenar el resultado en el ámbito global. Esto no está prohibido pero resulta confuso. Pudiendo elegir cualquier nombre de variable distinto, ¿para qué elegir el mismo nombre? Revisa este hilo donde está el ejercicio resuelto con el código mejor ordenado y trata de comprender lo que ahí se hace, posiblemente te oriente para plantear soluciones más ordenadas: https://aprenderaprogramar.com/foros/index.php?topic=3259.0

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".