getElementsByClassName 이 왜 값이 없을까요??
본문
연습하는 사이트는 kkw369.dothome.co.kr 입니다.
연습하는 것은 메인 배너 슬라이드를 하려고 하는데
slide.js 라는 곳에 코드를 작성햇는데 크롬에서 디버깅 해보니 getElementsByClassName 리턴이 아무것도 안오는것 같네요.
아래는 코드입니다.
slide.js
var slideIndex = 0;
showSlides();
function showSlides() {
var i;
var slides = document.getElementsByClassName('mySlides');
var dots = document.getElementsByClassName("dot");
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
slideIndex++;
if (slideIndex > slides.length) {slideIndex = 1}
for (i = 0; i < dots.length; i++) {
dots[i].className = dots[i].className.replace(" active", "");
}
slides[slideIndex-1].style.display = "block";
dots[slideIndex-1].className += " active";
setTimeout(showSlides, 2000); // Change image every 2 seconds
}
index.php
<?php
define('_INDEX_', true);
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
if (G5_IS_MOBILE) {
include_once(G5_THEME_MOBILE_PATH.'/index.php');
return;
}
include_once(G5_THEME_PATH.'/head.sub.php');
?>
<!-- Slideshow container -->
<div class="slideshow-container">
<!-- Full-width images with number and caption text -->
<div class="mySlides fade">
<div class="numbertext">1 / 3</div>
<img src="<?php echo G5_THEME_IMG_URL; ?>/img1.jpg" style="width:100%">
<div class="text">Caption Text</div>
</div>
<div class="mySlides fade">
<div class="numbertext">2 / 3</div>
<img src="<?php echo G5_THEME_IMG_URL; ?>/img2.jpg" style="width:100%">
<div class="text">Caption Two</div>
</div>
<div class="mySlides fade">
<div class="numbertext">3 / 3</div>
<img src="<?php echo G5_THEME_IMG_URL; ?>/img3.jpg" style="width:100%">
<div class="text">Caption Three</div>
</div>
<!-- Next and previous buttons -->
<a class="prev" onclick="plusSlides(-1)">❮</a>
<a class="next" onclick="plusSlides(1)">❯</a>
</div>
<br>
<!-- The dots/circles -->
<div style="text-align:center">
<span class="dot" onclick="currentSlide(1)"></span>
<span class="dot" onclick="currentSlide(2)"></span>
<span class="dot" onclick="currentSlide(3)"></span>
</div>
<?php
include_once(G5_THEME_PATH.'/tail.sub.php');
?>
답변 3
w3school에서 코드 가져왔습니다.
js호출 말고 index에 직접 작성시 돌아가는 것을 확인했습니다.
추가 디버깅은 document에 요소들이 없는것 같습니다. 로딩이 되기 전에 스크립트가 실행되서 그럴까요? 혹시 인덱스에서 필수로 호출해 줘야 하는 부분이 있을까요?
스크립트 호출을 head.sub.php에 넣어서 발생하였습니다.
index.php 로딩 끝나고. tail.sub.php에 넣어주니 정상동작합니다.