В вашем коде значения в массиве должны быть строковыми литералами, т.е.
> var imageArray = [images/1-btn, images/download-as-you-like];
должно быть:
var imageArray = ['images/1-btn', 'images/download-as-you-like'];
Кроме того, не используйте 'setAttribute', если выесть веская причина.Вместо этого используйте свойства DOM, так как setAttribute содержит ошибки и в некоторых случаях ненадежен.Также более естественно читать, поскольку вы действительно пытаетесь установить свойство объекта DOM, а не атрибута разметки HTML, поэтому:
> myImage.setAttribute("src",imageArray[imageIndex]);
должно быть:
myImage.src = imageArray[imageIndex];
Также:
> if (imageIndex >= imageArray.length) {
> imageIndex=0;
> }
можно управлять с помощью оператора модуля%:
imageIndex = imageIndex % imageArray.length;
Вся функция может быть уменьшена до:
function changeImage() {
myImage.src = imageArray[index++ % imageArray.length];
}
Вы также можетеизбавиться от глобальных переменных с помощью замыканий:
var changeImage = (function() {
var myImage = document.getElementById("mainImage");
var imageArray = ['images/1-btn', 'images/download-as-you-like'];
var imageIndex = 0;
return function () {
myImage.src = imageArray[index++ % imageArray.length];
}
}());
Однако вы должны запустить приведенный выше код после элемент с идентификатором mainImage существует в DOM (например, вы не можете запустить его из головы).Вероятно, лучше вызвать функцию и передать идентификатор, используя window.onload .