前提
JavaScriptでローディング画面がフェードアウトするコードを制作しています。
実現したいこと
document.getElementByIdではなく、getElementsByClassNameでclass 指定をしたいです。
発生している問題・エラーメッセージ
js.js:4 Uncaught TypeError: Cannot read properties of undefined (reading 'remove')
というエラーがでてしまいます。
```HTML <div id="loading" class="is-hide loading"> <div id="loading__logo" class="is-hide loading__logo"> <img src="loading__icon.png" alt="" class="loading__fadeUp"> </div> </div>
CSS
1/* 非表示 */ 2.is-hide { 3 display: none; 4} 5/* ローディング画面をフェードアウト */ 6.fadeout-bg { 7 transition-property: opacity; 8 transition-delay: .9s; 9 transition-duration: .8s; 10 opacity: 0; 11 pointer-events: none; 12} 13/* ローダーをフェードアウト */ 14.fadeout-loader { 15 transition-property: opacity; 16 transition-delay: .9s; 17 transition-duration: .3s; 18 opacity: 0; 19 pointer-events: none; 20} 21 22 23 24.loading { 25 position: fixed; 26 width: 100%; 27 height: 100%; 28 z-index: 900; 29 background: white; 30} 31 32.loading__logo { 33 position: absolute; 34 top: 50%; 35 left: 50%; 36 transform: translate(-50%, -50%); 37} 38 39.loading__logo img { 40 min-width: 15rem; 41 max-width: 30rem; 42 ; 43} 44 45.loading__fadeUp { 46 animation-name: fadeUpAnime; 47 animation-duration: 0.5s; 48 animation-fill-mode: forwards; 49 opacity: 0; 50} 51 52@keyframes fadeUpAnime { 53 from { 54 opacity: 0; 55 transform: translateY(100px); 56 } 57 58 to { 59 opacity: 1; 60 transform: translateY(0); 61 } 62}
CSS
1var bg = document.getElementsByClassName('loading'), 2 loader = document.getElementsByClassName('loading__logo'); 3bg.classList.remove('is-hide'); 4loader.classList.remove('is-hide'); 5 6/* 読み込み完了 */ 7window.addEventListener('load', stopload); 8 9/* 10秒経ったら強制的にロード画面を非表示にする */ 10setTimeout('stopload()',10000); 11 12/* ロード画面を非表示にする処理 */ 13function stopload(){ 14 bg.classList.add('fadeout-bg'); 15 loader.classList.add('fadeout-loader'); 16}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。