2012-04-06 3 views
1

申し訳ありませんが、私は質問を正しく聞いているかわかりません。ユーザーによって日付が変更されると、ページ上の日付のカウントダウンが変更されます。日付が複数回変更された場合、日付がすべて変更されて点滅します。私はそれが以前の情報をどこかに保存していると思います。私はvarsをクリアしようとしました。私は運Javascriptでバールまたはコールバックをクリアする

$('#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

+0

@ c69ありがとう、しかしそれは私の問題を解決しません。 – MHowey

+1

@MHoweyだからこそ、彼はコメントで答えを書いたのです。 –

答えて

3

#deal_endから「フォーカスアウト」するたびに、イベントを.hに添付します。 countdown(...)の動作を正確に知らなければ(ソースを提供して助けてもらうのが良いでしょう)、問題を解決する方法の1つは、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/

1

問題とPHPで行うように

var deal_yeax = ''; 

は、日付の変更をフラッシュするために、あなたのコード内で使用している.countdown機能であると思われます。新しいカウントダウンオブジェクトを$( "。h")に割り当てると、プラグインまたは関数がイベントハンドラまたはインターバルを割り当てている可能性がありますが、それが再度呼び出されたときに古いものをクリアしていないようですなぜそれが各カウントダウンのためにすべての日付を点滅させるか。したがって、手動で行う必要があります。外部プラグインを使用しているのか、それとも自分の関数なのか分かりませんが、関数を呼び出すときに要素に割り当てられている既存のイベントや間隔をクリアするだけです。自分のプラグインを使用しているかどうかを教えたり、自分の関数であればコードを表示したりするともっと役に立ちます。 (カウントダウン()を参照)

関連する問題