#javascript
На этот вопрос уже даны ответы здесь:
не работает .getElementsByClassName [дубликат]
(1 ответ)
Почему идет ошибка like.addEventListener is not a function?
(1 ответ)
Закрыт 2 года назад.
Собственно сам вопрос: почему когда пишу код по getElementById работает, а с getElementsByclassName
не работает ??
Это рабочий код
var img = document.getElementById('images');
var imagesArray = ["img/flower1.jpg", "img/flower2.jpg", "img/flower3.jpg",
"img/flower5.jpg", "img/flower6.jpg"];
var index = 0;
function changeimg(){
img.setAttribute("src" ,imagesArray[index]);
imdex++;
if (imdex >= imagesArray.length) {
imdex = 0;
}
}
setInterval(changeimg, 5000);
Это не рабочий код
var img = document.getElementsByClassName('images');
var imagesArray = ["img/flower1.jpg", "img/flower2.jpg", "img/flower3.jpg",
"img/flower5.jpg", "img/flower6.jpg"];
var index = 0;
function changeimg(){
img.setAttribute("src" ,imagesArray[index]);
imdex++;
if (imdex >= imagesArray.length) {
imdex = 0;
}
}
setInterval(changeimg, 5000);
Ответы
Ответ 1
getElementsById - это один элемент, а getElementsByClassName - это живая коллекция элементов. Вообще где указано getElements - это живая коллекция с элементами. И что бы обратиться к элементу по getElementsByClassName нужно указывать индекс элемента, к которому ты хочешь обратиться. А если ты хочешь ко всем элементом с данным классом, то нужно создавать цикл: Пример: var elem = document.getElementsByClassName('class'); for(var i = 0; i < elem.length; i++){ elem[i].innerHTML = 'Код' }; Так же можно обращаться через новые функции: querySelector и querySelectorAll document.querySelector('query selector') - это первый элемент с данным селектором. document.querySelectorAll('query selector') - все элементы с данным селектором (коллекция элементов. Нужно обращаться через индекс). Чем примечательная эта функция, так это тем, что в ней можно указывать те же селекторы, что и в CSS. То есть, можно обратиться к элементам по атрибуту - [атрибут="его значение"], по классу .element, по ID - #elem и по всем другим query селекторам.Ответ 2
getElementById getElementsByClassName ^ Второй возвращает коллекцию элементов, а не 1 элемент, как первый.Ответ 3
Потому не работает, что getElementById возвращает один элемент, а getElementsByClassName возвращает массив элементов. Чтобы получить первый элемент попробуйте написать так: var img = document.getElementsByClassName('images')[0]; Литература: MDN: document.getElementsByClassName() MDN: document.getElementById()
Комментариев нет:
Отправить комментарий