Есть:
setInterval (
function() {
document.getElementsByClassName('farm_icon_a').click();
}, 1000
);
Получаю:
Uncaught TypeError: document.getElementsByClassName(...).click is not a function at :3:56
Как правильно сделать?
Лучше использовать querySelector
вместо getElementsByClassName
, потому, что он кэширует результат.
getElementsByClassName возвращает nodeList, который является псевдомассивом у которого нет методов обычных массивов.
Вам необходимо nodeList преобразовать в массив через Array.prototype.slice.call(nodeList)
или Array.from()
(это новый метод и не во всех браузерах поддерживается), пройтись по этому массиву циклом и на каждый элемент сделать click()
var buttons = Array.prototype.slice.call(document.querySelectorAll('.farm_icon_a'));
buttons.forEach(function(button, index) {
setTimeout(function() { button.click(); }, index * 100);
});
setInterval (
function() {
var arr = document.getElementsByClassName('farm_icon_a');
for(var i = 0; i < arr.length; i++)
{
arr[i].click();
}
}, 1000
);
// get button array (Из соседнего ответа)
var buttons = Array.prototype.slice.call(document.querySelectorAll('.farm_icon_a'));
var clickers = buttons.map(function(button) {
return function(){
button.click();
}
});
var index = 0;
setInterval(function(){
if (index == clickers.length) index = 0;
clickers[index]();
index++;
}, 500);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нем могу понять в чем проблема, во всех браузерах нормально работает, а в IE нетСуть проблемы, блок появляется и через секунду сразу исчезает,...