У меня проблема с моим setInterval. Я работаю над somesort news thingy, который показывает следующий новостной материал каждые x секунд. Я использую для этого setInterval
.setInverval работает только один раз
Моя проблема заключается в следующем: я установил интервал внутри функции. Когда DOM загружен, я запускаю эту функцию. Интервал внутри функции начинает работать.
Когда я помещаю что-то вроде предупреждения или журнала внутри интервала, все в порядке. Но когда я добавляю в него что-то еще, интервал работает только один раз.
Это вся функция:
var initNews = function() {
var captions = $('#newsContainer').find('.newsCaptionContainer .caption'),
newsImages = $('#newsContainer').find('.newsImageContainer .newsImage'),
newsCount = captions.length,
selectedNews = $('#newsContainer').find('.newsCaptionContainer li.selected'),
firstNews = captions.first();
var triggerNextNewsitem = function() {
if((selectedNews.prev().index() + 1) == newsCount) {
firstNews.trigger('click');
} else {
selectedNews.next().trigger("click");
}
};
var interval = setInterval(triggerNextNewsitem, 5000);
captions.on('click', function() {
if($(this).hasClass('selected')) {
return;
} else {
captions.removeClass('selected');
}
$(this).addClass('selected');
});
$('#newsContainer').on('mouseover', function() {
clearInterval(interval);
console.log('Interval disabled');
}).on('mouseleave', function() {
setInterval(triggerNextNewsitem, 5000)
console.log('Interval enabled');
});
};
В принципе, у меня есть несколько дивов с «подписью» класса. Первый div имеет класс «selected» по умолчанию (данный внутри моего html-документа). Интервал должен запускаться каждые 5 секунд, чтобы найти следующий div.caption
, и его нужно щелкнуть, чтобы отобразить новый информационный материал (интервал только делает это один раз). Когда #newsContainer
завис, интервал останавливается, поэтому следующий файл новостей не будет отображаться автоматически. Интервал работает с предупреждением или что-то в этом роде.
Кто-нибудь знает, почему это происходит с этим кодом?
Чаевые приветствуются, как я могу улучшить код (я не так хорош в JQuery/JavaScript.: P
Спасибо заранее
Спасибо за ваш ответ. Но, к сожалению, это не сработает. Моя проблема заключается в том, что интервал должен выполняться неограниченное время, прежде чем я нахожу '# newsContainer'. И когда я оставляю '# newsContainer', интервал должен запускаться снова, неограниченное количество раз. – Galago