zaman belirli bir süre için ekran görüntü ve komut

3 Cevap php

Bu benim geçen gün sordum ama benim sayfa kodu önemli ölçüde daha karmaşık hale geldi ve ben onu tekrar gereken bir soruya çok benzer. Ben aşağıdaki kodu kullanarak oldum:

$('#myLink').click(function() {
  $('#myImg').attr('src', 'newImg.jpg');
  setTimeout(function() { $('#myImg').attr('src', 'oldImg.jpg'); }, 15000);
});

Bağlantı tıklandığında zaman (15 saniye) bir süre için bir görüntüyü değiştirmek için, sonra 15 saniye sonra, orijinal görüntüye dönmek.

Ancak şimdi, ben bağlantı (görüntü yerine ek olarak) tıklandığında de javascript bir pasajı çalıştırmak istiyorum, ve bağlantı tıklandığında sadece zaman (o 15 saniyelik görüntü ile alakalı) ve daha sonra JS 15 saniye ... ancak ben sayfanın içine jquery gönder js kodu var nasıl emin değilim sonra kod yanı yok ... Temelde sadece 15 saniye altında sayfa üzerine bu kodu "echo" için jQuery isterken ben orada değilim, ama nasıl jquery biçimleri bu "echo" Bilmiyorum.

Bu soru mantıklı mı?

  interval = 500;
  imgsrc = "webcam/image.jpg";

  function Refresh() {
     tmp = new Date(); 
     tmp = "?" + tmp.getTime();
     document.images["image1"].src = imgsrc + tmp;
     setTimeout("Refresh()", interval);
  }

  Refresh();

Bir web kamerası için senaryo. Temelde her yarım saniye yeni bir resim alır ve sayfada değiştirir. Beni affet, ben jquery yeniyim, ben bir jquery bağlamda Bu script çalışması için nasıl bilmiyorum.

3 Cevap

Eğer, bir aralıkta şey çalıştırmak için benzer olan, setInterval() kullanmak istiyorsanız setTimeout().

Eğer bir değişkene setInterval() atarsanız, bunu "açıkça" bu değişkeni kullanabilirsiniz. Lütfen setTimeout() fonksiyonu bunu.

$('#myLink').click(function() {
    // Start setInterval which runs a function every n seconds, and assign it to a variable
    var runningInterval = setInterval(function() {...}, 500);  

    $('#myImg').attr('src', 'newImg.jpg');

    // After 15 seconds, clear the runningInterval, and reset the image.
    setTimeout(function() { clearInterval(runningInterval); $('#myImg').attr('src', 'oldImg.jpg'); }, 15000);
});

EDIT:

Tamam, bu yüzden, burada bu kod ile.

  interval = 500;
  imgsrc = "webcam/image.jpg";

  // Is this function getting called?
  function Refresh() {
     tmp = new Date(); 
     tmp = "?" + tmp.getTime();

        // You could use jQuery here, just like below.
     document.images["image1"].src = imgsrc + tmp;
  }

  $('#myLink').click(function() {
      // Start setInterval which runs your Refresh function every 0.5 seconds, and assign it to a variable
      var runningInterval = setInterval(Refresh, interval);  

      // Display new image
      // This line may be unnecessary if the Refresh() function is loading it anyway.
      $('#myImg').attr('src', 'newImg.jpg');

      // After 15 seconds, clear the runningInterval, and reset the image.
      setTimeout(function() { clearInterval(runningInterval); $('#myImg').attr('src', 'oldImg.jpg'); }, 15000);

      return false;
  });

Yani bir şey gibi:

var original_url = '';
var second_url = 'http://example.com/path/to/image.jpg';
var delay_in_milliseconds = 15000

function resetImage() {
    $('#myImg').attr('src', original_url);
}

$(document).ready(function () {
    original_url = $('#myImg').attr('src');
    $('#myImg').attr('src', second_url);
    setTimeout(resetImage, delay_in_milliseconds)
});

Bu biçimlendirme varsayarsak:

<img id="myImg" src="another/path/to/another/image.jpg" />

Ben sorunuzu anlamak düşünüyorum, ama sen o ihtiyacı düşünüyorsanız bunu revize çekinmeyin.

Muhtemelen kod ne bağlıdır.

Sayfa kaynağı açısından düşünmeyin. DOM açısından düşünüyorum.

Bu enjekte etmek istediğiniz javascript olay çeşit (bir olay işleyicisi var) kolları olasıdır. Yani ilk tıklamada, size uygun bir olayı (eklemek) bu işlevi bağlamak ve sonra setTimeout'd fonksiyonda unbind istiyorum.

Eğer devre dışı / bazı davranışını etkinleştirmek için çalışıyor değilseniz, o zaman biz bu geçici javascript daha iyi bir kılavuz sağlamak için ne yaptığını hakkında daha fazla bilgi kullanabilirsiniz.