Foros del Web » Programando para Internet » Javascript »

alguien sabe hacer esto con "eval()"

Estas en el tema de alguien sabe hacer esto con "eval()" en el foro de Javascript en Foros del Web. hola, me gustaria saber, si sabes si existe alguna forma de combiar el uso de la función eval() para hacer operaciones (como si fuera un ...
  #1 (permalink)  
Antiguo 01/06/2007, 15:18
 
Fecha de Ingreso: abril-2007
Mensajes: 10
Antigüedad: 17 años
Puntos: 0
alguien sabe hacer esto con "eval()"

hola, me gustaria saber, si sabes si existe alguna forma de combiar el uso de la función eval() para hacer operaciones (como si fuera un calculadora) combinado con campos checkboxs?

es decir, lo que pregunto seria algo como por ejemplo tener 4 campos checkbox en un formulario, cada checkbox tendria un "value" diferente como:

1º checkbox value="1"
2º checkbox value="2"
3º checkbox value="4"
4º checkbox value="8"

y ahora con el código script de eval, poder sumar esos valores (1+2+4+8) solo si estan activados los 4 checkbox o lo que es lo mismo,

si solo activo la 2º casilla + la 4º casilla que se sume (2+8) y el resultado apareciese en un campo "texto" (es decir, que el value del campo texto reflejara el resultado de la operación).

igualmente si yo desactivara alguno de las casilla Ya activadas, el resultado de la operacion de la suma bajaría...

si alguien puese pasarme una estructura básica del codigo java, se lo agradeceria mucho. ^^
  #2 (permalink)  
Antiguo 01/06/2007, 15:33
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: alguien sabe hacer esto con "eval()"

Te dejo la idea, con un evento (onClick) llama a una funcion en la que le mandes como parametro el mismo objeto del check seleccionado ( onClick="tuFuncion(this);" ) ya en la funcion verifica si el check que ejecuto el evento fue seleccionado o desceleccionado( objCheck.checked == true){...}else{...} ), dependiendo el caso vas haciendo la operación (si es suma : document.getElementById('tuCampo').value=objCheck. value+document.getElementById('tuCampo').value;//e igual para la restarle valor )

Bueno, talvez haya que convertir a numerico los valores, pero en si eso haria io, te pondria código para ando algo atareado, espero te ayude, suerte!!!!
__________________
Wow! No se que decir...
  #3 (permalink)  
Antiguo 02/06/2007, 03:53
 
Fecha de Ingreso: abril-2007
Mensajes: 10
Antigüedad: 17 años
Puntos: 0
Re: alguien sabe hacer esto con "eval()"

bueno si pudieras ponerme un ejemplo mejor, por ejemplo el codigo del formulario seria así:

Código PHP:
<form method="post" name="prueba">
<
table>
<
tr>
<
td><input type="checkbox" name="opcion1" value="1">+1</td>
<
td><input type="checkbox" name="opcion2" value="2">+2</td>
</
tr><tr>
<
td><input type="checkbox" name="opcion3" value="4">+4</td>
<
td><input type="checkbox" name="opcion4" value="8">+8</td>
</
tr><tr>
<
td colspan="2"><input type="text" name="resultado" value="" size="12" readonly></td>
</
tr>
</
table>
</
form
ahora lo del código... ¿cómo seria?
  #4 (permalink)  
Antiguo 03/06/2007, 11:03
 
Fecha de Ingreso: abril-2007
Mensajes: 10
Antigüedad: 17 años
Puntos: 0
Re: alguien sabe hacer esto con "eval()"

bueno ya lo he lograo yo solo... para quien le interese ^^:

Código PHP:
<html>

<
head>
<
script>
function 
calcula(){
  if (
document.forms[0].opcion1.checked==true){
      
document.forms[0].opcion1.value"1";
  }else{
      
document.forms[0].opcion1.value"0";
  }
  if (
document.forms[0].opcion2.checked==true){
      
document.forms[0].opcion2.value"2";
  }else{
      
document.forms[0].opcion2.value"0";
  }
  if (
document.forms[0].opcion3.checked==true){
      
document.forms[0].opcion3.value"4";
  }else{
      
document.forms[0].opcion3.value"0";
  }
  if (
document.forms[0].opcion4.checked==true){
      
document.forms[0].opcion4.value"8";
  }else{
      
document.forms[0].opcion4.value"0";
  }
  return 
resultado();
}   

function 
resultado(){
  var 
x=parseInt(document.forms[0].opcion1.value)
  var 
y=parseInt(document.forms[0].opcion2.value)
  var 
z=parseInt(document.forms[0].opcion3.value)
  var 
t=parseInt(document.forms[0].opcion4.value)
  
document.forms[0].resultado.value = eval('x + y + z + t');
}   
        
</script>
</head>

<body>
<form method="post">
<table>
<tr>
<td><input type="checkbox" name="opcion1" value="0" onclick="calcula()">+1</td>
<td><input type="checkbox" name="opcion2" value="0" onclick="calcula()">+2</td>
</tr><tr>
<td><input type="checkbox" name="opcion3" value="0" onclick="calcula()">+4</td>
<td><input type="checkbox" name="opcion4" value="0" onclick="calcula()">+8</td>
</tr><tr>
<td colspan="2"><input type="text" name="resultado" value="0" size="12" readonly></td>
</tr>
</table>
</form>
</body>

</html> 

Última edición por adriermenda; 03/06/2007 a las 11:24
  #5 (permalink)  
Antiguo 04/06/2007, 06:24
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: alguien sabe hacer esto con "eval()"

Emm, ¿no sería más fácil colocar en el value los valores que quieres sumar? Creo que te ahorrarías muuucho código:

Código PHP:
<form method="post" name="f">
<
table>
<
tr>
<
td><input type="checkbox" name="opcion1" value="1" onclick="calcula()">+1</td>
<
td><input type="checkbox" name="opcion2" value="2" onclick="calcula()">+2</td>
</
tr><tr>
<
td><input type="checkbox" name="opcion3" value="4" onclick="calcula()">+4</td>
<
td><input type="checkbox" name="opcion4" value="8" onclick="calcula()">+8</td>
</
tr><tr>
<
td colspan="2"><input type="text" name="resultado" value="0" size="12" readonly></td>
</
tr>
</
table>
</
form



<
script>

function 
calcula() {
    for(var 
i=1res=0i<=4i++) {
        var 
elem=document.f["opcion"+i];
        if( 
elem.checked )
            
res+=parseInt(elem.value);
    }
    
document.f.resultado.value=res;
}

</script> 

Saludos.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #6 (permalink)  
Antiguo 04/06/2007, 07:07
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: alguien sabe hacer esto con "eval()"

Que tal, io deci asi:

Código HTML:
<form method="post" name="f">
<table>
<tr>
<td><input type="checkbox" name="opcion1" value="1" onclick="calcula(this)">+1</td>
<td><input type="checkbox" name="opcion2" value="2" onclick="calcula(this)">+2</td>
</tr><tr>
<td><input type="checkbox" name="opcion3" value="4" onclick="calcula(this)">+4</td>
<td><input type="checkbox" name="opcion4" value="8" onclick="calcula(this)">+8</td>
</tr><tr>
<td colspan="2"><input type="text" name="resultado" value="0" size="12" readonly></td>
</tr>
</table>
</form> 



<script>

function calcula(obj) {
        if( obj.checked )
            document.f.resultado.value+=parseInt(obj.value);
        else
            document.f.resultado.value=parseInt(document.f.resultado.value)-parseInt(obj.value);
}

</script> 
Asi puedes restar o sumar al quitar o seleccionar na casilla , espero te ayude, Derkenuke, creo se te escapo el poder resar tambien en tu función, almenos que io no lo aya entendido si lo hiciste y espero funcione el código, no lo probe :P
__________________
Wow! No se que decir...

Última edición por zyon; 05/06/2007 a las 07:19 Razón: Olvide quitar un par de lineas de código sobrante...
  #7 (permalink)  
Antiguo 04/06/2007, 07:45
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: alguien sabe hacer esto con "eval()"

Cita:
Iniciado por zyon
Derkenuke, creo se te escapo el poder resar tambien en tu función
Si te fijas en mi código se parte siempre de un valor 0 y se suma sólo los checkboxes que estén checked. Nunca se resta ni se suma en función de la caja, sólo se suma a 0 los valores de los check que estén checked, evitando que se coloque cualquier valor no deseado en la caja.

Aunque tu solución también me parece buena.



Saludos.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #8 (permalink)  
Antiguo 05/06/2007, 07:18
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: alguien sabe hacer esto con "eval()"

Hey es cierto, no capte que cada vez que selecciona un check los recorre todos y hace la operación de buevo, muy cierto, no se que pense ayer, gracias por la corrección!! por cierto, no se por que se repitio mi respuesta :S
__________________
Wow! No se que decir...
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 15:42.