Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.08.2013, 13:47
Интересующийся
Отправить личное сообщение для Universe Посмотреть профиль Найти все сообщения от Universe
 
Регистрация: 11.06.2011
Сообщений: 20

Не работает setInterval внутри jQuery ready в Chrome
Делаю простенький слайдер фотографий на jQuery, не могу сделать авто переключение фото с интервалом.
Использую для этого setInterval:
jQuery(document).ready(function(){

    /*debug*/
    $('.autoPlay').html('autoPlay = '+ window.autoPlay);
    $('.timePassed').html('timePassed = '+ window.timePassed);
    $('.timeToChange').html('timeToChange = '+ window.timeToChange  );
    $('.currentPanel').html('currentPanel = '+ window.currentPanel);


    setInterval('alert(123)', 1000);
    console.log("213");
    $('img.marquee_panel_photo').each(function(index){
        var photoWidth = $('.marquee_container').width();
        var photoPosition = index * photoWidth;
        var cur_src = $(this).attr('src');
        var cur_alt = $(this).attr('alt');
        console.log($(this).attr('alt'));
        $('.marquee_photos').append('<img class="marquee_photo" style="left:'+photoPosition+';" src="'+cur_src+'" alt="'+cur_alt+'" width="700" height="350" />');
        $('.marquee_photos').css('width', photoPosition + photoWidth);
        window.totalPanels = index + 1;
        /*debug*/ $('.totalPanels').html('totalPanels = '+ window.totalPanels)
    })

    $('.marquee_panels .marquee_panel').each(function(index){
        $('.marquee_nav').append('<a class="marquee_nav_item"></a>');
//        console.log("index "+index);
    });

    $('.marquee_nav a.marquee_nav_item').click(positionPhoto);
    $('.marquee_panel img').imgpreload(init);
})


setTimeout тоже не отрабатывает, если указывать задержку, например 1 сек. Не работает только в Chrome. Версия браузера 28.0.1500.95 m
Хотя если я пишу этот setInterval('alert(123)', 1000); внутри самого html файла - отрабатывает нормально. Ошибок в консоли нет. В чём может быть проблема?
Ответить с цитированием
  #2 (permalink)  
Старый 14.08.2013, 14:17
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

setInterval/setTimeout принимают аргументом не строку, а ссылку на функцию. Например setInterval(function(){ alert('bla') }, 1000);
(на самом деле строку тоже, но просто какое-то недоразумение)
Ответить с цитированием
  #3 (permalink)  
Старый 14.08.2013, 14:36
Интересующийся
Отправить личное сообщение для Universe Посмотреть профиль Найти все сообщения от Universe
 
Регистрация: 11.06.2011
Сообщений: 20

я пробовал по всякому. И строку и анонимную функцию и обычную, не работает никак
Ответить с цитированием
  #4 (permalink)  
Старый 14.08.2013, 15:54
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
jQuery(document).ready(function(){
 
    /*debug*/
    // $('.autoPlay').html('autoPlay = '+ window.autoPlay);
    // $('.timePassed').html('timePassed = '+ window.timePassed);
    // $('.timeToChange').html('timeToChange = '+ window.timeToChange  );
    // $('.currentPanel').html('currentPanel = '+ window.currentPanel);
 
 
    setInterval('alert(123)', 1000);
    console.log("213");
    $('img.marquee_panel_photo').each(function(index){
        var photoWidth = $('.marquee_container').width();
        var photoPosition = index * photoWidth;
        var cur_src = $(this).attr('src');
        var cur_alt = $(this).attr('alt');
        console.log($(this).attr('alt'));
        $('.marquee_photos').append('<img class="marquee_photo" style="left:'+photoPosition+';" src="'+cur_src+'" alt="'+cur_alt+'" width="700" height="350" />');
        $('.marquee_photos').css('width', photoPosition + photoWidth);
        window.totalPanels = index + 1;
        /*debug*/ $('.totalPanels').html('totalPanels = '+ window.totalPanels)
    })
 
    $('.marquee_panels .marquee_panel').each(function(index){
        $('.marquee_nav').append('<a class="marquee_nav_item"></a>');
//        console.log("index "+index);
    });
 
    $('.marquee_nav a.marquee_nav_item').click(positionPhoto);
    // $('.marquee_panel img').imgpreload(init);
})
</script>


ЧЯДНТ?
Ответить с цитированием
  #5 (permalink)  
Старый 14.08.2013, 17:35
Интересующийся
Отправить личное сообщение для Universe Посмотреть профиль Найти все сообщения от Universe
 
Регистрация: 11.06.2011
Сообщений: 20

Вот архив с проектом, попробуйте запустить marquee.html
Вложения:
Тип файла: zip jQuery Slider.zip (638.1 Кб, 5 просмотров)
Ответить с цитированием
  #6 (permalink)  
Старый 14.08.2013, 17:37
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Universe
Вот архив с проектом, попробуйте запустить marquee.html
Нужен кому твой архив. Ты онлайн запили. В песочницу местную, или jsfiddle или любой другой подобный сервис.
Ответить с цитированием
  #7 (permalink)  
Старый 14.08.2013, 18:03
Интересующийся
Отправить личное сообщение для Universe Посмотреть профиль Найти все сообщения от Universe
 
Регистрация: 11.06.2011
Сообщений: 20

Проблема была в версии jQuery. Я использовал локальную версию 1.6, переключился на 1.10 - всё пошло как надо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jquery для placeholder работает только для первого input в ie Nailya jQuery 1 13.05.2014 09:57
Получение значения переменной внутри обработчика события jQuery Mbenga Общие вопросы Javascript 2 01.07.2013 10:57
Не работает jquery код на сайте Gvozdb jQuery 1 20.03.2013 11:57
AJAX-авторизация не работает начиная с версии jQuery 1.9.0 allanmiln AJAX и COMET 3 06.02.2013 11:40
При наборе адреса с www не работает AJAX (JQuery)! madmis AJAX и COMET 3 23.11.2009 19:03