清除Javascript中的Var或回调
对不起,我不确定我问的问题是否正确。当用户更改日期时,页面上的日期倒计时会更改。如果日期更改多次,则会闪烁所有日期更改。我猜它是在某处存储以前的信息。我已经试着清理过了清除Javascript中的Var或回调,javascript,jquery,callback,Javascript,Jquery,Callback,对不起,我不确定我问的问题是否正确。当用户更改日期时,页面上的日期倒计时会更改。如果日期更改多次,则会闪烁所有日期更改。我猜它是在某处存储以前的信息。我已经试着清理过了 var deal_yeax = ''; 就像我在php中所做的那样,没有运气 $('#deal_end').focusout(function() { var deal_end = $("#deal_end").val(); var array = deal_end .split('-'); var deal_montx =
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");
}
}
});
});
});
问题似乎出在.倒计时功能上,您在代码中使用它来闪烁日期更改。当您将一个新的倒计时对象分配给$.h时,插件或函数可能会为它分配一些事件处理程序或时间间隔,但当再次调用它时,它似乎不会清除旧的对象,这就是为什么它会闪烁每个倒计时的所有日期。因此,您必须手动执行此操作。我不确定您是在使用外部插件还是自己的函数,但您需要做的是在调用函数时清除分配给元素的现有事件或间隔。如果你告诉我你正在使用哪个插件,或者如果它是你自己的函数,我会更有用。参考.countdown,问题似乎在于代码中用于刷新日期更改的.countdown函数。当您将一个新的倒计时对象分配给$.h时,插件或函数可能会为它分配一些事件处理程序或时间间隔,但当再次调用它时,它似乎不会清除旧的对象,这就是为什么它会闪烁每个倒计时的所有日期。因此,您必须手动执行此操作。我不确定您是在使用外部插件还是自己的函数,但您需要做的是在调用函数时清除分配给元素的现有事件或间隔。如果你告诉我你正在使用哪个插件,或者如果它是你自己的函数,我会更有用。参考.countdown每当您从交易结束开始关注时,都会将倒计时事件附加到.h。不知道倒计时是怎么回事。。。如果你能提供源代码,我们就可以提供更多的帮助!,解决此问题的一种方法可能是使用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);
});
});
一句话:这似乎是焦点出。。。每次触发时都会添加新的倒计时。这可能就是你的问题所在
不确定这是否有用?让我知道
附带提示:每次您从交易结束时,都会在.h上附加一个倒计时事件。不知道倒计时是怎么回事。。。如果你能提供源代码,我们就可以提供更多的帮助!,解决此问题的一种方法可能是使用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);
});
});
一句话:这似乎是焦点出。。。每次触发时都会添加新的倒计时。这可能就是你的问题所在
不确定这是否有用?让我知道
附带提示:ts和消息日是全局变量。在第一次使用它们之前添加var。@c69谢谢,但这并不能解决我的问题problem@MHowey这就是为什么他写在评论中而不是在回答中。ts和message_days是全局变量。在第一次使用它们之前添加var。@c69谢谢,但这并不能解决我的问题problem@MHowey这就是为什么他把它写在评论中,而不是回答。