как добавить условие в js скрипт?
для массового добавления в друзья вк, я использую это:
javascript:var buttons=document.getElementsByClassName('friends_find_user_add');
console.log(buttons); for(key in buttons){buttons[key].click();}
Мне нужно, чтобы скрипт добавлял только тех людей, с кем n-ое кол-во общих друзей.
скрипт ниже выводит такого формата текст - 1308 общих друзей
var div = document.getElementsByClassName("friends_find_user_label");
for (var i = 0; i < div.length; i++)
console.log(div[i].innerHTML);
Ответы (1 шт):
Простой вариант:
let buttons = document.querySelectorAll('.friends_find_user_add');
let info = document.querySelectorAll(".friends_find_user_label");
for (let i = 0; i < info.length; i++) {
let mutual_friends = Number( info[i].textContent.match(/\d*/)[0] );
if (mutual_friends > 5) buttons[i].click();
}
Называется "регулярное выражение", \d - digit, цифры. * - ноль или много совпадений подряд.
.match() возвращает массив совпадений (строки), откуда достается первый [0] элемент (число целиком) и превращается непосредственно в число, через Number()
Но браузер не любит, когда скрипт сразу кликает по сотням кнопок. Поэтому, было бы правильнее кликать циклом, добавив небольшую задержку после каждого клика. Примерно так:
let buttons = document.querySelectorAll('.friends_find_user_add');
let info = document.querySelectorAll(".friends_find_user_label");
let add_friends = [...buttons].filter((_,i) => info[i].textContent.match(/\d*/)[0] > 5);
// Оставляет только те кнопки, на которые надо кликать.
// google → "JS массивы", "spread оператор", "Array filter", "Стрелочные функции"
let i = 0;
(function _loop() {
add_friends[i].click();
if (add_friends[++i]) setTimeout(_loop, 250); // в миллисекундах. По 4 клика в секунду
// Каждый раз, увеличивая `i`, если в массиве еще есть элементы,
// функция через таймер вызывает саму себя.
})();
>> https://learn.javascript.ru/
>> https://developer.mozilla.org/ru/
P.s. Фигурные скобки в условиях пропущены, потому что они выполняют одну короткую строчку кода. Если строчка кода длинная, или код многострочный, пишут так:
if (условие) {
// код...
// код...
// код...
}