Стробоскоп Jquery div

#javascript #jquery

#javascript #jquery

Вопрос:

Я хотел бы, чтобы div действовал как стробоскоп с помощью jquery. В основном меняйте цвет фона с черного на белый каждые 500 миллисекунд.

Как я могу это сделать?

 <div id="strobe"></div>
  

Спасибо!

Комментарии:

1. Вы можете создать бесконечный цикл, создав функцию, затем задать цвет фона с помощью jquery или создать два класса и присвоить классу этот div. Затем используйте setTimeout из javascript, чтобы создать задержку в цикле и снова вызвать функцию. вы также можете это проверить jquery.offput.ca/timers

Ответ №1:

setInterval() Функция здесь твой друг.

Вам не нужно использовать jQuery, вы можете сделать это на чистом javascript — вот как вы бы это сделали:

 var elem = document.getElementById("strobe");
var strobeBackground = function() {
   (elem.style.backgroundColor == "white") ? elem.style.backgroundColor = "black" : elem.style.backgroundColor = "white";
}

setInterval(strobeBackground, 500);
  

Однако, если вы хотите сделать это в jQuery, вот оно:http://jsfiddle.net/Ru9xt/2

HTML-код будет выглядеть следующим образом:

  <div id="strobe" class="white">Hello</div>
  

CSS будет выглядеть следующим образом:

 .white {
    background-color: white;
}
.black {
    background-color: black;
}
  

И JS здесь:

 setInterval(function () {
        $("#strobe").toggleClass('black');
    }, 500);
  

Комментарии:

1. вы можете ускорить процесс, кэшируя элемент, возвращаемый document.getElementById вместо того, чтобы выполнять два вызова для элемента каждый раз, когда вы меняете цвет. 1 за использование DOM 🙂

Ответ №2:

Вы можете использовать jQuery как для проверки цвета фона элемента, так и для установки интервала, с которым он мигает, с помощью $.css() метода, который получает или задает стиль элемента, и setInterval() метода, который настраивает повторяющийся вызов метода.

 function toggle(){
    var strobe = $('#strobe');
    if(strobe.css('background-color') == '#FFFFFF'){
        strobe.css('background-color', '#000000');
    }else{
        strobe.css('background-color', '#FFFFFF');
    }
}

setInterval(toggle, 500);
  

Ответ №3:

Вместо этого я использовал классы:

 /**
 * Initialise strobe using classes. By Emmanuel Mahuni - 2015
 * @param {string} sel selector
 * @param {int} i speed in milli-seconds
 * @param {string} c1 class 1
 * @param {string} c2 class 2
 * @returns {int} the interval id so that you can clear it later
 */
function initStrobeClass(sel, i, c1, c2) {
    return setInterval(strobeClass, i,sel,c1,c2);
}

/**
 * Strobe using classes. By Emmanuel Mahuni - 2015
 * @param {string} sel selector
 * @param {string} c1 class 1
 * @param {string} c2 class 2
 */
function strobeClass(sel, c1, c2) {
    var s = $(sel);
    s.toggleClass(c1   " "   c2);
}

/**
 * Clear the strobe to a particular class
 * @param {int} t interval id
 * @param {string} sel selector of the element
 * @param {string} c the class to set after clearing the strobe
 * @returns {null} returns null to make sure we don't come back here again, make sure the interval id is set by this and do the checking to eliminate errors.
 */
function clearStrobeToClass(t, sel, c) {
    clearInterval(t);
    $(sel).attr('class', c);
    return null;
}
  

использование:

Приведенный ниже код начнет мигать кнопкой выхода, когда обратный отсчет будет меньше 181. Он восстановит его, когда значение превысит 180.

 if (autoLogoutCountdown <= 180 amp;amp; (typeof strobeLogoutTimer !== typeof NaN)) {
    strobeLogoutTimer = initStrobeClass('#logout', 1000, 'logoutflash', 'logout');
} else if (autoLogoutCountdown > 180 amp;amp; (typeof strobeLogoutTimer === typeof NaN)) {
    strobeLogoutTimer = clearStrobeToClass(strobeLogoutTimer, '#logout', 'logout');
}
  

Я надеюсь, что это кому-то поможет