Попробуйте добавить минимальный воспроизводимый пример: { ссылка }
Вот мое предположение о том, что вы пытаетесь сделать:
var bar_ids = ['one', 'two', 'three'];
var myInterval;
var myIndex = 0;
var myLoopCount = 0;
myInterval = setInterval(()=>{
if (myLoopCount == 0){
var att = document.createAttribute("bar");
document.querySelector('#'+bar_ids[myIndex]).setAttributeNode(att);
}
bars = $('[bar]');
//console.log(bars[myIndex])
$('html,body').animate({scrollTop: $(bars[myIndex]).offset().top }, 1000);
myIndex +=1;
if (myIndex >= bar_ids.length){
myLoopCount += 1;
myIndex = 0;
if (myLoopCount > 5){
clearInterval(myInterval)
}
}
},500)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="one" style="height:1200px; background:#ff0000"></div>
<div id="two" style="height:1200px; background:#0004ff"></div>
<div id="three" style="height:1200px; background:#00ff04"></div>
Дайте мне еще немного исходного кода и описания, которое я, вероятно, могу помочь в дальнейшем.
Лучше всего было бы, если бы вы раскошелили этот кодPen: https://codepen.io/Alexander9111/pen/qBdrQLG, а затем поделитесь этим тоже:)
Короче (если предположить, что ваш вариант использования близок / достаточно хорош), вы должны использовать селектор, подобный этому:
$(bars[myIndex]).offset().top
И вы можете получить столбцы (массив элементов DOM) следующим образом:
var bars = $('[bar]');
и вы можете получить myIndex например:
var myIndex = bars.length - 1;
(помните, что массивы с нулевой индексацией)