Я хочу знать, замедляет ли setInterval мой сайт или нет?
setInterval(function(){
var uploadbtndiv = document.getElementById("imagesmaindiv");
if (uploadbtndiv.childElementCount == 1) {
document.getElementsByClassName("plusupload")[0].style.top = "17px";
}else{
document.getElementsByClassName("plusupload")[0].style.top = "-81px";
}
}, 10);
Технически каждая операция замедляет работу вашего сайта. Читайте о циклах событий
Вы должны выбирать каждый элемент однажды, а не каждый раз, когда выполняется интервал. Кроме того, минимальный точный "интервал" setInterval составляет 12 мс или 16 мс или что-то в этом роде. IIRC, я думаю, что 10 мс слишком мало
если setInterval тормозит сайт. а скажите, почему setInterval создан инверторами javascript?
@JaromandaX - очень незначительно, если getElementsByClassName предоставляется браузером и не заполнен полифиллами. getElementById и getElementsByClassName являются быстрыми ослепительно (последний не должен создавать коллекцию каждый раз при вызове; он каждый раз возвращает одну и ту же коллекцию).
setInterval полезен, setInterval 100 раз в секунду с неэффективным кодом - это не то, что имел в виду Брендан Эйх
но @TJCrowder getElementById нужно запускать только один раз, а поскольку getElementsByClassName - это живой список, его тоже нужно запускать только один раз, поэтому я придерживаюсь своего утверждения, что код в интервале может быть «более эффективным» (я не сказал значительно или даже немного быстрее: p)
@JaromandaX - И я не говорил, что вы ошибались. Я указал, что это будет улучшение маргинальный.
честно - вы правы в своем ответе - setInterval, вероятно, в любом случае не лучшее решение для «проблемы» - если вы потенциально меняете макет с каждой итерацией, даже requestAnimationFrame будет лучше, чем интервал ( опять же, но не в этом случае)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


setInterval не замедляет работу вашего сайта. Неправильное использование может. В вашем коде вы планируете выполнение операции примерно каждые 10 мс. Это много. Даже эффективная операция (а ваша довольно эффективная, хотя могла бы быть и более высокая), выполняемая 100 раз в секунду, может сложиться.
Вероятно, вам не нужен setInterval в вашем примере. Кажется, вы хотите что-то изменить в зависимости от того, сколько элементов в imagesmaindiv. Я бы сделал это одним из трех способов:
if / else в код, который добавляет / удаляет элементы в / из imagesmaindivimagesmaindiv, поэтому я выполняю работу только тогда, когда его содержимое изменяется, а не 100 раз в секунду
что происходит если вы меняете интервал на 100 или вообще убираете интервал ... ваш сайт быстрее? вы, конечно, можете сделать код в интервале более эффективным