Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.04.2016, 17:29
Аватар для kiberkun
Интересующийся
Отправить личное сообщение для kiberkun Посмотреть профиль Найти все сообщения от kiberkun
 
Регистрация: 30.05.2014
Сообщений: 21

Открывает 1 раз, проблемы с each или for
Есть массив, в ней есть ссылки, эти ссылки мне нужно открывать каждые 2 секунды по очереди, но он открывает 1 раз. Остальные игнорирует

var map = ["/d/416873", "/d/428156", "/d/428156n", "/d/418826", "/d/393995", "/d/339001", "/d/296157", "/d/391953", "/d/414348", "/d/430582", "/d/431087", "/d/417610", "/d/373373", "/d/401604", "/d/152572", "/d/371198", "/d/402680", "/d/363223", "/d/363223n", "/d/347460", "/d/420265", "/d/406025", "/d/406025n", "/d/391823", "/d/428432", "/d/428432n", "/d/375378", "/d/379229", "/d/379229n", "/d/366079", "/d/429454", "/d/371849", "/d/419869", "/d/419869n", "/d/431341", "/d/431341n", "/d/356968", "/d/409898", "/d/413122", "/d/396118", "/d/245186", "/d/417492", "/d/107421", "/d/107421n", "/d/371217", "/d/421936", "/d/421936n", "/d/330216", "/d/414289"];

for (var i = 0; i < map.length; i++) {
	setInterval(function() {
		window.location.href = map[i];
		//console.log(map[i])
	}, 2000)
}
Ответить с цитированием
  #2 (permalink)  
Старый 07.04.2016, 17:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

kiberkun,
читать медленно вдумчиво страница перезагружается в строке 5 а значит успеет сработать только первый переход, а значит интервал и цикл бесполезны. придумайте иной алгоритм.
Ответить с цитированием
  #3 (permalink)  
Старый 07.04.2016, 17:46
Аватар для kiberkun
Интересующийся
Отправить личное сообщение для kiberkun Посмотреть профиль Найти все сообщения от kiberkun
 
Регистрация: 30.05.2014
Сообщений: 21

а сработает, если ссылку открыть в новой вкладке?
Ответить с цитированием
  #4 (permalink)  
Старый 07.04.2016, 17:51
Аватар для kiberkun
Интересующийся
Отправить личное сообщение для kiberkun Посмотреть профиль Найти все сообщения от kiberkun
 
Регистрация: 30.05.2014
Сообщений: 21

да, сработало, но он мне все ссылки открывает каждые 2 секунды с новой вкладки. А нужно что бы 1 ссылку и по очереди.

var map = ["/d/416873", "/d/428156", "/d/428156n", "/d/418826", "/d/393995", "/d/339001", "/d/296157", "/d/391953", "/d/414348", "/d/430582", "/d/431087", "/d/417610", "/d/373373", "/d/401604", "/d/152572", "/d/371198", "/d/402680", "/d/363223", "/d/363223n", "/d/347460", "/d/420265", "/d/406025", "/d/406025n", "/d/391823", "/d/428432", "/d/428432n", "/d/375378", "/d/379229", "/d/379229n", "/d/366079", "/d/429454", "/d/371849", "/d/419869", "/d/419869n", "/d/431341", "/d/431341n", "/d/356968", "/d/409898", "/d/413122", "/d/396118", "/d/245186", "/d/417492", "/d/107421", "/d/107421n", "/d/371217", "/d/421936", "/d/421936n", "/d/330216", "/d/414289"];

for (var i = 0; i < map.length; i++) {
	setInterval(function() {
		window.open(map[i], '_blank');
	}, 2000)
}


Что не так делаю?
Ответить с цитированием
  #5 (permalink)  
Старый 07.04.2016, 18:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

kiberkun,
уберите цикл оставьте только i
Ответить с цитированием
  #6 (permalink)  
Старый 07.04.2016, 18:34
Аватар для kiberkun
Интересующийся
Отправить личное сообщение для kiberkun Посмотреть профиль Найти все сообщения от kiberkun
 
Регистрация: 30.05.2014
Сообщений: 21

Не понял! Написал другой вариант:
var map = ["/d/416873", "/d/428156", "/d/428156n", "/d/418826", "/d/393995", "/d/339001", "/d/296157", "/d/391953", "/d/414348", "/d/430582", "/d/431087", "/d/417610", "/d/373373", "/d/401604", "/d/152572", "/d/371198", "/d/402680", "/d/363223", "/d/363223n", "/d/347460", "/d/420265", "/d/406025", "/d/406025n", "/d/391823", "/d/428432", "/d/428432n", "/d/375378", "/d/379229", "/d/379229n", "/d/366079", "/d/429454", "/d/371849", "/d/419869", "/d/419869n", "/d/431341", "/d/431341n", "/d/356968", "/d/409898", "/d/413122", "/d/396118", "/d/245186", "/d/417492", "/d/107421", "/d/107421n", "/d/371217", "/d/421936", "/d/421936n", "/d/330216", "/d/414289"];
var i = 0;

var all = map.length,
    linkDownloadMap = setInterval(function() {
        if (i == all) {
            clearInterval(linkDownloadMap);
        } else {
            i++;
            console.log("Ссылка на карту " + map[i]);
        }
    }, 100);


Только он выдает в конце ошибку undefined :|
Ответить с цитированием
  #7 (permalink)  
Старый 07.04.2016, 18:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

kiberkun,
строки 9 и 10 поменяйте местами
Ответить с цитированием
  #8 (permalink)  
Старый 07.04.2016, 18:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от kiberkun
Не понял!
всё вы поняли
Ответить с цитированием
  #9 (permalink)  
Старый 07.04.2016, 21:15
Аватар для kiberkun
Интересующийся
Отправить личное сообщение для kiberkun Посмотреть профиль Найти все сообщения от kiberkun
 
Регистрация: 30.05.2014
Сообщений: 21

хорошо!
возможно

я как задрот osu!mania решил написать себе скрипт для быстрой загрузки карт. Сам скрипт вот:
// Определяем кол-во страниц в каталоге карт
var all_page = $(".pagination:last a:last").prev().text();
// Начальная страница каталога
var start_page = '1';

// В каждом каталоге по 40 карт
// 1 карта за 3 секунды
// Открываем новый каталог после окончания 40*3 = 120 секунд(Всего 2 минуты, дабы не забанили(ошибка 503) ^_^)
function mapLoad() {
    if (start_page == all_page) {
        clearInterval(DownloadMap);
    } else {
        $.ajax({
            type: "GET",
            url: "/p/beatmaplist", // ссылка на каталог карт
            data: {
                l: "1", // рекомендуемая трудность
                r: "4", // ранг статус (все)
                q: "", // название карты (если пустое, то все названия)
                g: "0", // все жанры
                la: "0", // все языки
                ra: "", // а хз что это за параметр :D
                s: "4", // а хз что это за параметр :D
                o: "1", // а хз что это за параметр :D
                m: "3", // мод osu!mania
                page: start_page // страница
            },
            success: function(data) {
                // создаем массив карт
                var map = [],
                    i = 0;

                // ищим карты и вставляем в массив "map"
                $("a.beatmap_download_link:not(.novid)", data).each(function() {
                    var e = $(this).attr("href");
                    map.push(e);
                });

                var all = map.length,
                    linkDownloadMap = setInterval(function() {
                        if (i == all) {
                            clearInterval(linkDownloadMap);
                        } else {
                            // скачиваем файл
                            window.open(map[i], '_blank');
                            i++;
                        }
                    }, 3000);
            }
        });
        start_page++;
    }
}

mapLoad();

var DownloadMap = setInterval(function() {
    mapLoad()
}, 120000);


Возможно дорабатывать буду)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Canvas, проблемы с отрисовкой изображений sunAirway Общие вопросы Javascript 4 07.01.2016 22:21
Как узнать, float или int значение присвоено переменной? gadyuka Общие вопросы Javascript 4 30.10.2012 15:31
Скрипт правильно работает только один раз, после начинает выдавать ошибку. xodock Events/DOM/Window 2 23.07.2012 13:04
Удалить ряд символов перед или после курсора до определенного сивола brd Javascript под браузер 3 30.10.2009 08:20
Как узнать свернуто окно браузера или нет. bar-boss Events/DOM/Window 3 25.09.2008 16:09