清除Var或回调在Javascript中

问题描述:

对不起,我不知道我是否正确提问。当用户更改日期时,页面上的日期倒数会发生变化。如果日期多次更改,则会闪烁所有日期更改。我想它是存储以前的信息的地方。我已经尝试清除增值税。清除Var或回调在Javascript中

var deal_yeax = ''; 

,我会在PHP做,没有运气

$('#deal_end').focusout(function() { 
var deal_end = $("#deal_end").val(); 
var array = deal_end .split('-'); 
var deal_montx = array[0]; 
var deal_dax = array[1]; 
var deal_yeax = array[2]; 

    deal_montx = deal_montx - 1; 

    $(function(){ 
    ts = new Date(deal_yeax , deal_montx , deal_dax ); 
    $(".h").countdown({ 
    timestamp : ts, 
    callback : function(days, hours, minutes, seconds){ 
    message_days = (days); 
    var message_hours = (hours); 
    $(".message_hours").text(message_hours + " Hours"); 
    var message_minutes = (minutes); 
    $(".message_minutes").text(message_minutes + " Minutes"); 
    var message_seconds = (seconds); 
     // Creat the display 
     if (message_days < 1 && message_hours < 1) { $(".message_seconds").text(message_seconds + " Seconds"); } 
     else if (message_days < 1 && message_hours > 1) { } 
     else if (message_days == 1) { $(".message_days").text(message_days + " Day"); } 
     else { $(".message_days").text(message_days + " Days"); } 

     if (message_days < 1 && message_hours < 1 && message_minutes < 1 && seconds < 1) { 
     $(".hide_my_buy_button").fadeOut("fast"); 
     } 
    } 
}); 
}); 
}); 
+2

'ts'和'message_days'是全局变量。在第一次使用前添加**'var' **。 – c69 2012-04-06 19:51:34

+0

@ c69谢谢,但是这并不能解决我的问题 – MHowey 2012-04-06 19:53:18

+1

@Mhoow这就是为什么他在评论中写下它而不是回答。 – 2012-04-06 20:39:31

每当您从#deal_end“专注”时,您都会将countdown事件附加到.h。不知道countdown(...)的工作原理(如果您提供源代码以便我们可以提供更多帮助,这将非常有用),解决此问题的一种方法可能是使用JQuery的unbind(...)函数删除事件上的现有侦听器,然后添加新事件到它。

下面是对这个问题的例子:

<!-- HTML --> 
<div> 
    <input id="text" /> 
    <button id="clicker" /> 
</div> 

<!-- Javascript --> 
$('#text').focusout(function() { 
    var text = this.value; 

    // Everytime #text is "focused out", a new event is registered with #clicker. 
    $('#clicker').click(function() { 
     console.log('Value: ' + text); 
    }); 
}); 

...这是如何解决这个问题

(这只是众多方法之一这种方式可能不是最优雅的,但无论如何。)
$('#text').focusout(function() { 
    var text = this.value; 

    $('#clicker').unbind('click'); 
    // Everytime #text is "focused out", a new event is registered with #clicker. 
    $('#clicker').click(function() { 
     console.log('Value: ' + text); 
    }); 
}); 

底线:似乎专注(...)每次触发时都会添加一个新的countdown。这可能是你遇到的问题。

不知道这是否有帮助? Lemme知道。

P.S. JSFiddle去吧:http://jsfiddle.net/PE9eW/

这个问题似乎与您正在使用在代码中闪烁的日期更改.countdown功能。当你将一个新的倒计数对象赋值给$(“。h”)时,插件或函数可能会为它分配一些事件处理程序或间隔,但是当它再次被调用时,它似乎不会清除旧的对象。为什么它会闪烁每个倒计时的所有日期。所以你必须手动完成。我不确定您使用的是外部插件还是您自己的功能,但您需要做的是在调用函数时清除分配给元素的现有事件或间隔。如果您告诉我您正在使用哪个插件,或者如果它是您自己的功能,则可以显示该代码,我可以更有帮助。 (指.countdown())