Foros del Web » Programando para Internet » Javascript »

No tiene sentido!!

Estas en el tema de No tiene sentido!! en el foro de Javascript en Foros del Web. hola, tengo el siguiente codigo que para mi es bastante logico, pero aun asi no funciona, y cuand por ejeplo lo compraro con el numero ...
  #1 (permalink)  
Antiguo 08/10/2007, 21:19
Adoniasv
Invitado
 
Mensajes: n/a
Puntos:
No tiene sentido!!

hola, tengo el siguiente codigo que para mi es bastante logico, pero aun asi no funciona, y cuand por ejeplo lo compraro con el numero 4 da un valor loco, que no correspnde.

Código PHP:

function compara(){

    
//genero array
    
var Cantidades = new Array("0","30","50","75","100");
    var 
Valores = new Array("100","200","300","400");

    for(
0Cantidades.lengtha++ ){
        var 
numero document.getElementById('el_numero').value;

        
//Verifico si el numero esta entre los rangos de los arrays
        
if(Cantidades[(a+1)] > numero && numero Cantidades[a]){
        
            
//Multiplico
            
alert(numero Valores[a])
            break
        }
    }


Explico mas menos el codigo.

Tengo sierta cantidad de cosas que segun la cantidad es el precio

si son hasta 30 valen 100, y asi susess....>>>

El problema es que si coloco 1, funciona i me imprime 100, pero si coloco 4 me imprime un numero que no corresponde..

alguien sabe por que ????
  #2 (permalink)  
Antiguo 11/10/2007, 01:19
 
Fecha de Ingreso: septiembre-2007
Mensajes: 268
Antigüedad: 16 años, 7 meses
Puntos: 8
Re: No tiene sentido!!

Cita:
Iniciado por Adoniasv Ver Mensaje
hola, tengo el siguiente codigo que para mi es bastante logico, pero aun asi no funciona, y cuand por ejeplo lo compraro con el numero 4 da un valor loco, que no correspnde.

Código PHP:

function compara(){

    
//genero array
    
var Cantidades = new Array("0","30","50","75","100");
    var 
Valores = new Array("100","200","300","400");

    for(
0Cantidades.lengtha++ ){
        var 
numero document.getElementById('el_numero').value;

        
//Verifico si el numero esta entre los rangos de los arrays
        
if(Cantidades[(a+1)] > numero && numero Cantidades[a]){
        
            
//Multiplico
            
alert(numero Valores[a])
            break
        }
    }


Explico mas menos el codigo.

Tengo sierta cantidad de cosas que segun la cantidad es el precio

si son hasta 30 valen 100, y asi susess....>>>

El problema es que si coloco 1, funciona i me imprime 100, pero si coloco 4 me imprime un numero que no corresponde..

alguien sabe por que ????
Seguramente te imprima 200 * 4 = 800, ya que esta comprobando strings y "4" es mayor a "30".
  #3 (permalink)  
Antiguo 11/10/2007, 06:49
Adoniasv
Invitado
 
Mensajes: n/a
Puntos:
Re: No tiene sentido!!

Cita:
Iniciado por Erickvk Ver Mensaje
Seguramente te imprima 200 * 4 = 800, ya que esta comprobando strings y "4" es mayor a "30".
Como NO entiendo , se supone que son numeros no strings ?? podrias explicarte un poco mejor. }

gracias por tu ayuda
  #4 (permalink)  
Antiguo 11/10/2007, 07:17
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Re: No tiene sentido!!

La verdad es que no acabo de comprender muy bien la dinámica del asunto.

Según veo el script está devolviendo lo que se le está pidiendo. Fíjate en lo que dice si le ponemos un chivato


Código:
        if(Cantidades[(a+1)] > numero && numero > Cantidades[a]){
		alert(Cantidades[(a+1)] +" > " + numero + " " + (Cantidades[(a+1)] > numero) + " ; " + numero + " > " + Cantidades[a]  + " " + (numero > Cantidades[a]))
        
            //Multiplico
            alert(numero * Valores[a])
            break
        }
Las condiciones se está cumpliendo y entra a ejecutar la multiplicación.

Cuéntanos un poco mejor lo que pretendes y danos algún ejemplo de lo que debería devolver si se introduce 1, si se introduce 4, si se introducen 31 ....


un saludo
  #5 (permalink)  
Antiguo 11/10/2007, 07:39
Adoniasv
Invitado
 
Mensajes: n/a
Puntos:
Re: No tiene sentido!!

Cita:
Iniciado por tunait Ver Mensaje
La verdad es que no acabo de comprender muy bien la dinámica del asunto.

Según veo el script está devolviendo lo que se le está pidiendo. Fíjate en lo que dice si le ponemos un chivato


Código:
        if(Cantidades[(a+1)] > numero && numero > Cantidades[a]){
		alert(Cantidades[(a+1)] +" > " + numero + " " + (Cantidades[(a+1)] > numero) + " ; " + numero + " > " + Cantidades[a]  + " " + (numero > Cantidades[a]))
        
            //Multiplico
            alert(numero * Valores[a])
            break
        }

Las condiciones se está cumpliendo y entra a ejecutar la multiplicación.

Cuéntanos un poco mejor lo que pretendes y danos algún ejemplo de lo que debería devolver si se introduce 1, si se introduce 4, si se introducen 31 ....


un saludo

Gracias tunait.

Mira, tienes toda la razon, el scripts ejecuta lo que le pido, perocuando lo comparo con 4 dberia ser (4 * 100 = 400) ya que 4 es menor a 30 y mayor que 0.

Por algun motivo que desconosco, el resultado que aroja es:

30 > 4 && 4 > 0 = false

50 > 4 && 4 > 0 = true

entonces debuelve 4 * 200 = 800

Deberia ser 400 no 800.. porque pasa eso??
  #6 (permalink)  
Antiguo 11/10/2007, 07:51
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Re: No tiene sentido!!

ok, ya veo. Es por lo que te comentaba antes Erickvk y es que está tratando los valores como de tipo String. Aunque sean valores de tipo numérico, para el script son strings dado que los defines entre comillas.

Quítales las comillas a los valores de los arrays y te funcionará correctamente
__________________
Javascript Códigos - Bambú difunde
  #7 (permalink)  
Antiguo 11/10/2007, 07:54
Adoniasv
Invitado
 
Mensajes: n/a
Puntos:
Re: No tiene sentido!!

jaajajaj

plop! tan facil!!!
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 17:05.