Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   не могу чисто логически сообразить (https://javascript.ru/forum/misc/70784-ne-mogu-chisto-logicheski-soobrazit.html)

денис77447327 02.10.2017 20:43

не могу чисто логически сообразить
 
нужно чтобы скрипт кликнул по 100000 картинкам к примеру. но после клика по 25й картинке останавливался на 30 секунд , потом продолжал с 25й и так до 100000
var i;


window.scrollBy(0,5000);
if (i>0){i=i;for (i=i; i<100000; i++) {document.getElementsByClassName('_si7dy')[i].click();}
}

else for (i=0; i<100000; i++) {document.getElementsByClassName('_si7dy')[i].click();}

j0hnik 02.10.2017 23:11

что тут сложного;
var i=0, img = document.querySelectorAll('img');
for(;i<=25; i++) img[i].click();

setTimeout(function(){
for(;i<=10000; i++) img[i].click();
},30000);

денис77447327 03.10.2017 00:33

этот скрипт кликнет 25 картинок подождет 30 секунд и кликнет 100000 картинок. мне не это нужно:blink:
нужно чтобы 25 кликов 30 сек таймаут еще 25 и т. д.

Rasy 03.10.2017 05:53

денис77447327,
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  
  <script>
    
   (function foo(i, n, max) {
     var t = setInterval(function() {
        console.log(++i);
        if (max == i) {
          clearInterval(t);
          return;
        }
        if (i % n === 0) {
          clearInterval(t);
          setTimeout(function() {
             foo(i, n, max);
          }, 30000);
        } 
     }, 1000);
   })(0, 25, 100);

  </script>

</body>
</html>

денис77447327 03.10.2017 17:02

окей , этот скрипт работает! подскажите как сделать чтобы он вместо вывода переменной в консоль , кликал по картинке
пробовал вместо console.log(++i) вставлять document.getElementsByClassName('_si7dy')[i].click(); не работает

Nexus 03.10.2017 17:20

денис77447327, попробуй метод "dispatchEvent".

денис77447327 03.10.2017 23:59

не работает или я не так делаю. подскажите плиз

j0hnik 04.10.2017 00:10

document.getElementsByClassName('_si7dy')[i].dispatchEvent(new Event("click"));


так пробовали?

денис77447327 04.10.2017 00:32

пробовал так не работает , но уже разобрался
(function foo(i, n, max) {
     var t = setInterval(function() {
        ++i;
document.getElementsByClassName('_si7dy')[i].click();
        if (max == i) {
          clearInterval(t);
          return;
        }
        if (i % n === 0) {
          clearInterval(t);
          setTimeout(function() {
             foo(i, n, max);
          }, 30000);
        } 
     }, 1000);
   })(0, 25, 100);
сейчас другая задача.. как после клика ждать 2 секунды скажем и выполнить вставку текста коменнта на изображении? функция внутри функции будет или как?

j0hnik 04.10.2017 00:36

Можно внутри а можно и ссылку на функцию;
в строке 15 - 1000 исправить на 2000.


Часовой пояс GMT +3, время: 05:44.