Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/12/2010, 01:25
yamatadvd2000
 
Fecha de Ingreso: febrero-2010
Mensajes: 49
Antigüedad: 16 años, 8 meses
Puntos: 1
Declaracion de variables javascript

Hola que tal.

El problema es el siguiente, no entiendo que esté mal.
(combino javascript con jquery)

Sé que una variable cuando es declarada fuera de una funcion es global, para que una variable sea global declarada dentro de una funcion, debe hacerse sin "var".

En mi codigo, tengo una funcion que es ejecutada dentro de otra funcion.
La segunda se ejecuta al dar click en un boton. esta, debe evaluar si una variable ("fal") es mayor a cero. Esta variable, es declarada globalmente fuera de ambas funciones, por defecto en 0.

Al presionar el boton, la primer funcion es ejecutada, evalua los campos, si la variable es de valor 0 ejecuta a la segunda funcion y comienza un contador, el cual hace que dicha variable cambie de valor (mayor a 0).

Al pulsar por segunda vez el boton, la primer funcion deberia negar la ejecucion de la segunda, pero no es así.

Si no declarara la variable de manera global, simplemente me tira el error que la variable no ha sido declarada y nada funciona.

El codigo es el siguiente:
vriable:

Código PHP:
var fal=0; 
Segunda funcion:
Código PHP:

 
function faltan(fal){ 
 
fal = fal-1000;
if (
fal > 0){ 
var 
segundos = Math.round(fal/1000); 
var 
minutos = Math.floor(segundos/60); 
var 
segundos_s = segundos%60; 
var 
horas = Math.floor(minutos/60); 
var 
minutos_s = minutos%60; 
var 
dias = Math.floor(horas/24); 
var 
horas_s = horas%24; 
$(
".error").html('Para otro espera<br>'+minutos_s+":"+segundos_s);
setTimeout("faltan("+fal+")",1000); 

} 
else { 
$(
".error").css('background-color', '#00ff00');
$(
".error").html('P&uacute;edes enviar un saludo');
return 
true; 
} 
} 
Primer funcion

Código PHP:
$("#peti").live('click', function(){
     
re=/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$/
      var 
name = $("#n").val();
        var 
email = $("#e").val();
      var 
com = $("#c").val();
      var 
p = $("#p").val();
      var 
n = $("#c").val().length;
      if(
re.exec(email)){
      if (
name == "" || email == "" || com == ""){
        $(
".error").css('background-color', e_color);
        $(
".error").html('Un canpo est&aacute; vacio');      
      }else{
//vacios
      
if (n>=50){
          if (
fal <= 0){
      $(
'#error').load('mail.php?n='+name+'&e='+email+'&c='+com+'&p='+p+'');
      $(
".error").css('background-color', e_color);
      
faltan(180000);
          }else{
//faltan
          
alert(fal);
          $(
".error").css('border', '1px solid #ffffff');
          }
      }
//caracteres min
      
}
      }else{
//evalua
      
$(".error").css('background-color', e_color);
      $(
".error").html('E-mail Invalido');
      }
      
     });