Я попытался сделать слайд-шоу в js и его не работает, все, что я получаю, это изображения, отображаемые на экране по порядку, а следующая и предыдущая ссылки просто отправляют меня в начало страницы. Я не могу понять, почему, я знаю решения, которые работают, но я не понимаю, почему это решение не работает. Есть много решений, которые я нашел в Интернете, которые очень похожи на этот, и они работают, но этого нет, я только недавно начал js, поэтому я представляю себе что-то глупое, которого я пропустил. Вот HTML: (редактирование: переместил в нижней части HTML тела)Слайд-шоу в формате HTML/Javascript
<html>
<head>
<title></title>
<link type="text/css" rel="stylesheet" href="CSS/mainPageStyle.css">
</head>
<body style="background-color:white">
<div id="titleLogo"><h1>Custom Motorbikes</h1></div>
<nav>
<ul>
<li><a href="">Home</a></li>
<li><a href="">About Us</a></li>
<li><a href="">Full ride list</a></li>
<li><a href="">Custom ride</a></li>
<li><a href="">Contact Us</a></li>
<li><a href="">Login</a></li>
<li><a href="">Register</a></li>
</ul>
</nav>
<!-- front page slideshow: -->
<img src="images/bikePerson.jpg" class="slides" style="width:100%" />
<img src="images/bikePersonCountry.jpg" class="slides" style="width:100%" />
<img src="images/bikeRoad.jpg" class="slides" style="width:100%" />
<a href="#" onclick="changeImage(1); return false;">Next Slide</a> <br/>
<a href="#" onclick="changeImage(-1); return false;">Previous Slide</a>
<!-- front page slideshow -->
<script type="text/javascript" src='JS/slideshow.js'></script>
</body>
</html>
здесь является ЯШ:
var imgPos = 0;
var changeImage(0); //called so that images(except first one) are hidden intially
var imgs = document.getElementsByClassName("slides"); //creates an array, and fills it with all images with 'slides' class
var arrayLength = imgs.length;
function changeImage(x) {
var i = 0; //used for counting through 'for' loop
imgPos += x; //x will be either -1 or +1
if (imgPos > arrayLength){ //if user goes beyond last img
imgPos = 0; //go to first img
}
if (imgPos < 0){ //if user goes before first img
imgPos = arrayLength; //go to furthest img
}
for (i = 0; i < arrayLength; i++){
imgs[i].style.display = "none"; //this hides all the images
}
imgs[imgPos].style.display = "block"; //this then displays the image we want to see
return false;
}
Здесь находятся ошибки:
Uncaught TypeError: Cannot read property '0' of undefined(…) slideshow.js:22
Uncaught TypeError: Cannot read property '1' of undefined(…)
насчет слайд-шоу не работает? «Не работает» не очень полезно, что не работает. –
Убедитесь, что ваш javascript запускается после загрузки html. Обычно вы можете переместить свой тег сценария в конец тела html, чтобы гарантировать, что теги img существуют до запуска вашего скрипта. – thgaskell
LIke @thgaskell говорит, что ваш js работает до вашего html, поэтому 'document.getElementsByClassName (« слайды »);' ничего не обнаруживает, потому что DOM еще не загружен. –