Foros del Web » Programando para Internet » Javascript »

Optimización de función.

Estas en el tema de Optimización de función. en el foro de Javascript en Foros del Web. Hola gente, Una preguntilla, ¿Habría alguna forma de optimiziar/acortar la siguiente función? Código PHP: function  checkthis () {           var  oCheckBox  =  document . getElementById ...
  #1 (permalink)  
Antiguo 21/11/2007, 17:45
 
Fecha de Ingreso: abril-2006
Mensajes: 218
Antigüedad: 18 años
Puntos: 0
Optimización de función.

Hola gente,

Una preguntilla,

¿Habría alguna forma de optimiziar/acortar la siguiente función?

Código PHP:
function checkthis()
{
    
     var 
oCheckBox document.getElementById('checkpromo'); 

     if (
oCheckBox.checked == true) {

          
document.getElementById('nuevapromo').style.visibility="visible";
          
document.getElementById('promoexist').style.visibility="hidden";
    
     }else{
            
          
document.getElementById('nuevapromo').style.visibility="hidden";
          
document.getElementById('promoexist').style.visibility="visible";
        
     }


Muchas gracias.
  #2 (permalink)  
Antiguo 21/11/2007, 22:57
Avatar de marcopoloaz06  
Fecha de Ingreso: julio-2007
Ubicación: México
Mensajes: 457
Antigüedad: 16 años, 9 meses
Puntos: 11
Re: Optimización de función.

Ps la acortarias asi pero podrías pasar algun parámetro que la acorte más, depende.
Código PHP:
<script type='text/javascript'>
function 
checkthis(){
var 
oCheckBox=document.getElementById('checkpromo'); 
 var 
np=document.getElementById('nuevapromo').style.visibility;
  var 
pe=document.getElementById('promoexist').style.visibility;
 if(
oCheckBox.checked==true){
    
np="visible";  pe="hidden";
 }else{
     
np="hidden";  pe="visible";
 }
}
</script> 
Zaludoz~
__________________
Aerolíneas Alicia :D
  #3 (permalink)  
Antiguo 22/11/2007, 01:06
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Optimización de función.

Hola:

Tal vez pueda ponerse en 2 líneas:

document.getElementById('nuevapromo').style.visibi lity=(document.getElementById('checkpromo').checke d)?"visible":"hidden";
document.getElementById('promoexist').style.visibi lity=(document.getElementById('checkpromo').checke d)?"hidden":"visible";

Aunque las líneas pueden ser más pequeñas con un alias:
function tag(id) {return document.getElementById(id);}

Ahora sería:

tag('nuevapromo').style.visibility=(tag('checkprom o').checked)?"visible":"hidden";
tag('promoexist').style.visibility=(tag('checkprom o').checked)?"hidden":"visible";

También se podría usar una variable con el resultado del "chequeo)
var ok = tag('checkpromo').checked;

Ahora las 2 líneas serían:

tag('nuevapromo').style.visibility=(ok)?"visible": "hidden";
tag('promoexist').style.visibility=(ok)?"hidden":" visible";

También podría hacerse una asignación directa si tenemos un array de visibilidades:
var v = new Array(); v[false] = "hidden"; v[true] = "visible";

Con esto quedaría:

tag('nuevapromo').style.visibility=v[ok];
tag('promoexist').style.visibility=v[!ok];

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 22/11/2007, 03:17
 
Fecha de Ingreso: abril-2006
Mensajes: 218
Antigüedad: 18 años
Puntos: 0
Re: Optimización de función.

Hola caricatos,

He usado esto y me va, el problema es que cuando lo desmarco no me vuelve a mostrar oriniexist.

Muchisimas gracias caricatos y marcopolaz.

Funciona correctamente.

Una última cosa, esta función también se podría optimizar?

Código PHP:
function procesa(ac,valor){ 

    if (
tag(ac).value.length >= 5) {
        
        
tag(valor).disabled false;
        
    } else {
        
        
tag(valor).disabled true;
        
    }


Un saludo y muchisimas gracias.

Última edición por erponcios; 22/11/2007 a las 03:55
  #5 (permalink)  
Antiguo 22/11/2007, 07:29
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 22 años, 2 meses
Puntos: 8
Re: Optimización de función.

Código PHP:
function procesa(ac,valor){tag(valor).disabled=(tag(ac).value.length >= 5)?false:true;} 
__________________
Kelpie
  #6 (permalink)  
Antiguo 22/11/2007, 07:34
 
Fecha de Ingreso: abril-2006
Mensajes: 218
Antigüedad: 18 años
Puntos: 0
Re: Optimización de función.

muchisimas gracias Kelipe.
  #7 (permalink)  
Antiguo 22/11/2007, 08:53
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Optimización de función.

Hola:

Siempre que haya una asignación del tipo: (valor lógico) ? true:false;
... puede omitirse... así que en el caso de Kelpie (¡Hola !) solo habría que invertir la condición...

function procesa(ac,valor){tag(valor).disabled = (tag(ac).value.length < 5)}

Fíjate que se asigna una comparación equivalente a los valores lógicos true/false

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 22/11/2007, 10:46
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 22 años, 2 meses
Puntos: 8
Re: Optimización de función.

Esa es muy buena Caricatos, no la sabía.
__________________
Kelpie
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 05:16.