Поддержка Проблемы и решения Функция SetInterval работает некоррестно

  • Подключил свой файл js в теме, в котором сделал очень простой слайдер на js, используя SetInterval. Тоже самое в простом сайте (не wp) работает как надо, но на вордпрессе как-то хаотично скачет, чему я вообще не нашел объяснения. Думаю, что просто в самом ядре cms могут быть уже setIntarval-ы, которые перебивают как-то мой (я уже грешу на всё).

    function slider(){
    		element = $('#top');
    		i = element.css('background-image'); //получаю нынешнее свойство у элемента, установленное просто css
       		i = i.substring(i.length - 6, i.length);//
    		i = i.substring(0,1); // обрезаю из строки именно номер картинки
    		i = parseFloat(i)+1; // добавляю 1
    		if(i == 7) i = 1;  // потому что всего 6 слайдов
    	    $('#top').css('background-image','url("/wp-content/themes/Maxim/images/slider/'+i+'.jpg")'); // ставлю значение, к которому я уже прибавил один
    
    	  window.setInterval('slider()', 3000); // вызываю рекурсивно эту же функцию через 3 сек
    	}
    jQuery(slider);
Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Не очень понял про «как-то хаотично скачет», но пальцем в небо, если попробовать так:

    (function ($) {
    	function slider(){
    		var element = $('#top');
    		var i = element.css('background-image'); //получаю нынешнее свойство у элемента, установленное просто css
       		i = i.substring(i.length - 6, i.length);//
    		i = i.substring(0,1); // обрезаю из строки именно номер картинки
    		i = parseInt(i)+1; // добавляю 1
    		if(i == 7) i = 1;  // потому что всего 6 слайдов
    	    $('#top').css('background-image','url("/wp-content/themes/Maxim/images/slider/'+i+'.jpg")'); // ставлю значение, к которому я уже прибавил один
    	}
    
        $(document).ready(function () {
    
    	window.setInterval('slider', 3000);
    
        });
    })(jQuery);

    но так оно не работает, в консоле пишет slider is not defined

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    но так оно не работает, в консоле пишет slider is not defined

    Походу из-за кавычек. Поправил.

    (function ($) {
    	function slider(){
    		var element = $('#top');
    		var i = element.css('background-image'); //получаю нынешнее свойство у элемента, установленное просто css
       		i = i.substring(i.length - 6, i.length);//
    		i = i.substring(0,1); // обрезаю из строки именно номер картинки
    		i = parseInt(i)+1; // добавляю 1
    		if(i == 7) i = 1;  // потому что всего 6 слайдов
    	    $('#top').css('background-image','url("/wp-content/themes/Maxim/images/slider/'+i+'.jpg")'); // ставлю значение, к которому я уже прибавил один
    	}
    
        $(document).ready(function () {
    
    	window.setInterval(slider, 3000);
    
        });
    })(jQuery);

    Если не сработает, залейте html-код слайдера на http://pastebin.com/ и пришлите ссылку, чтобы можно было предметно потестировать.

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Тема «Функция SetInterval работает некоррестно» закрыта для новых ответов.