任意のコンテンツ(今回は3つのdiv)をjsのsetIntervalで無限に表示非表示を切り替えるサンプル

■前提
「変数」「関数」「if文」といった単語と機能のざっくりとした理解
※ここまではProgateの無料版までで理解できそう。
let、var、constの違いもわかっているとよさそう。
■目標と考え方
jqから脱却し、普通のjavascript(PureJS/VanillaJS)に慣れたい。
初期コストとハードルを下げるためにも、はじめは使えたら楽しそう+htmlペライチで完結するものをできるだけ多くこなす。
例)表示切り替え、モーダル(バーガーメニュー)、スライドトグル(開閉メニュー)、おみくじ、スライドショー、ページング、神経衰弱等
①ifや簡単な関数はわかるけど、同時に効率のよい処理を考えるのが苦手なので、まずは冗長でも実現するための手順を考える
②簡潔かつ最新の書き方を目指すために、冗長な記述に対し、AIや学習サイトでしらべ、
 すぐに思いつかなかった配列・プロパティ・関数といった記述を採用していく
 ※AIを使う場合、サービスによって記法が古かったり、たまに適当なことを言ってくるのでそのへんを留意。
 また、解禁情報や案件で使用している単語などを入力しないように注意。
③調べながらコメントをつけて自分の理解を残す。
④採用した記述から、「javascriptでできること」の見識が広がるので、効率化可能か設計を見直す。
 ※理解を深めたい場合は都度ピンポイントで用途・意味や記法バリエーション、応用を調べたり、AIでテストを作成・採点しても効果的と思います。

■html側を基準に、おおまかな設計を考える
①cssでopacity0と1のクラスを作っておく※フェード効果のためにtransitionも入れておく
②各divには一意のid「div+連番」を付与し、初回のみ表示したいdivにopacityが1になるクラス「show」をつけておく
③一意のidを取得・変数格納→「show」の有無を判定してclassを付け替える関数を作成
④setIntervalで関数を実行


デモ↓
いち
さん
>css
.roop { position:absolute; width: 100%;}
#div1{ z-index: 1;}
#div2{ z-index: 2;}
#div3{ z-index: 3;}
.fade {
 opacity: 0;
 transition: opacity 3s;
}
.show {
 opacity: 1;
}

>html
<div id="div1" class="roop fade show">いち</div>
<div id="div2" class="roop fade">に</div>
<div id="div3" class="roop fade">さん</div>

>js
//1~3までの変数をそれぞれ定義
const el1 = document.getElementById('div1');
const el2 = document.getElementById('div2');
const el3 = document.getElementById('div3');
function showElement() { //「showElement」という関数を作成
 if(el1.classList.contains('show')){ //「el1(div1)」に「show」があった場合の処理
  el1.classList.remove('show');
  el2.classList.add('show');
  el3.classList.remove('show');
 }else if(el2.classList.contains('show')){ //以降「el2(div2)」「el3(div3)」も同様に設定
  el1.classList.remove('show');
  el2.classList.remove('show');
  el3.classList.add('show');
 }else if(el3.classList.contains('show')){
  el1.classList.add('show');
  el2.classList.remove('show');
  el3.classList.remove('show');
 }
}
setInterval(function(){
 showElement();
}, 3000); //3秒毎に「showElement」を繰り返し実行

■目標の「②」「③」(簡潔かつ最新の書き方)をやってみる
変数を配列化し、ifでの記述をやめ、実行時に初期値を更新、forEach+toggleによる比較・クラス付け替えに変更
const els = [ //roop対象のidを手動で指定・取得し、配列「els」に格納
 document.getElementById('div1'),
 document.getElementById('div2'),
 document.getElementById('div3'),
];
let current = 0; //「current」の初期値を設定
const toggle = () => { //以下2行の内容を「toggle」という関数に格納
 els.forEach((el, idx) => el.classList.toggle('show', idx === current)); //「els」の要素(el)に対してidxがcurrentと等しい場合に「show」を追加し、等しくない場合には「show」を削除するトグル(切り替え)
 current = (current + 1) % els.length; //実行されるたび「current」に「els」の総数 ÷ current+1を代入(変数更新)
 console.log(current); //コンソールに出力(1→2→0)
};
setInterval(toggle, 3000); //3秒毎に「toggle」を繰り返し実行
■④以降
→roop対象が多くなる場合は配列をいちいち連ねるのがだるいので、別の書き方を検証する
■jQuery版(背景が切り替わる演出の例)
→sample