Saya menggunakan setInterval(fname, 10000);
untuk memanggil fungsi setiap 10 detik dalam JavaScript. Apakah mungkin untuk berhenti memanggilnya di beberapa acara?
Saya ingin pengguna dapat menghentikan penyegaran data yang diulang.
Saya menggunakan setInterval(fname, 10000);
untuk memanggil fungsi setiap 10 detik dalam JavaScript. Apakah mungkin untuk berhenti memanggilnya di beberapa acara?
Saya ingin pengguna dapat menghentikan penyegaran data yang diulang.
setInterval()
mengembalikan ID interval, yang dapat Anda sampaikan ke clearInterval()
:
var refreshIntervalId = setInterval(fname, 10000);
/* later */
clearInterval(refreshIntervalId);
Lihat dokumen untuk setInterval()
dan clearInterval()
.
clearInterval
. Saya telah menggunakanwindow.refreshIntervalId
alih-alih variabel lokal, dan itu berfungsi dengan baik!$('foo').data('interval', setInterval(fn, 100));
dan kemudian membersihkannya denganclearInterval($('foo').data('interval'));
saya yakin ada cara non-jQuery untuk melakukannya juga.Jika Anda menetapkan nilai kembali
setInterval
ke variabel, Anda bisa menggunakannyaclearInterval
untuk menghentikannya.sumber
Anda dapat mengatur variabel baru dan menambahkannya dengan ++ (hitung satu) setiap kali berjalan, maka saya menggunakan pernyataan kondisional untuk mengakhirinya:
Saya harap ini membantu dan itu benar.
sumber
clearInterval(varName);
. Saya berharapclearInterval
tidak berfungsi ketika melewati nama fungsi, saya pikir itu memerlukan ID interval. Saya kira ini hanya dapat berfungsi jika Anda memiliki fungsi bernama, karena Anda tidak dapat melewatkan fungsi anonim sebagai variabel di dalam dirinya sendiri.$(document).ready(function(){ });
adalah jQuery, itu sebabnya tidak bekerja. Ini seharusnya sudah disebutkan setidaknya.varName
, yang menyimpan fungsi yang tidak disebutkan namanya - wha ?? Anda harus mengubah atau mencatat jawaban ini, IMHO.Jawaban di atas telah menjelaskan bagaimana setInterval mengembalikan pegangan, dan bagaimana pegangan ini digunakan untuk membatalkan pengatur waktu Interval.
Beberapa pertimbangan arsitektur:
Tolong jangan gunakan variabel "lingkup-kurang". Cara teraman adalah dengan menggunakan atribut objek DOM. Tempat termudah adalah "dokumen". Jika penyegaran dimulai dengan tombol start / stop, Anda dapat menggunakan tombol itu sendiri:
Karena fungsi didefinisikan di dalam handler klik tombol, Anda tidak perlu mendefinisikannya lagi. Penghitung waktu dapat dilanjutkan jika tombol diklik lagi.
sumber
document
dari padawindow
?Sudah dijawab ... Tetapi jika Anda memerlukan pengatur waktu yang dapat digunakan dan digunakan kembali yang juga mendukung banyak tugas pada interval yang berbeda, Anda dapat menggunakan TaskTimer saya (untuk Node dan browser).
Dalam kasus Anda, saat pengguna mengeklik untuk mengganggu penyegaran data; Anda juga dapat menelepon
timer.pause()
kemudiantimer.resume()
jika mereka perlu mengaktifkan kembali.Lihat lebih lanjut di sini .
sumber
Metode clearInterval () dapat digunakan untuk menghapus set timer dengan metode setInterval ().
setInterval selalu mengembalikan nilai ID. Nilai ini dapat diteruskan dalam clearInterval () untuk menghentikan timer. Berikut adalah contoh timer mulai dari 30 dan berhenti ketika menjadi 0.
sumber
@ cnu,
Anda dapat menghentikan interval, ketika mencoba menjalankan kode sebelum melihat browser konsol Anda (F12) ... coba komentar clearInterval (trigger) adalah melihat lagi konsol, bukan mempercantik? : P
Lihat contoh sumber:
sumber
Deklarasikan variabel untuk menetapkan nilai yang dikembalikan dari setInterval (...) dan meneruskan variabel yang ditugaskan ke clearInterval ();
misalnya
// Di mana saja Anda memiliki akses ke timer yang dinyatakan di atas panggilan clearInterval
sumber
Anda juga dapat menghentikan interval dengan menambahkan pendengar acara untuk mengatakan tombol dengan ID "interval berhenti":
HTML:
Catatan: Interval masih akan dieksekusi, tidak ada yang akan terjadi.
sumber
Ini adalah bagaimana saya menggunakan metode clearInterval () untuk menghentikan timer setelah 10 detik.
sumber
Gunakan setTimeOut untuk menghentikan interval setelah beberapa waktu.
sumber
Saya kira kode berikut akan membantu:
Anda melakukan kode 100% benar ... Jadi ... Apa masalahnya? Atau ini tutorial ...
sumber
Mengapa tidak menggunakan pendekatan yang lebih sederhana? Tambahkan kelas!
Cukup tambahkan kelas yang memberi tahu interval untuk tidak melakukan apa pun. Misalnya: di hover.
Saya telah mencari pendekatan cepat dan mudah ini sejak lama, jadi saya memposting beberapa versi untuk memperkenalkan sebanyak mungkin orang.
sumber
this.setInterval(function() { if(!$('#counter').hasClass('pauseInterval')) { //do something } }, 500);
adalah semua yang Anda miliki untuk kode. Selain itu, cek adalah hal pertama yang Anda lakukan, jadi sangat ringan ketika sedang melayang. Untuk itulah fungsi ini: untuk sementara menjeda suatu fungsi . Jika Anda ingin menghentikannya tanpa batas: tentu saja Anda menghapus interval.