<div class="card__heading-img">
<img src="" class="active" />
<img src=""/>
<img src=""/>
</div>
<a href="#`" class="btn">btn</a>
var btn = document.querySelector('.click');
var img = document.querySelectorAll('.card__heading-img img');
var i = 0;
if (img[i].classList.contains('active')) {
img[i].classList.remove('active');
} else {
img[i].classList.add('active');
}
i ++ ;
if (i == img.length) {
i = 0;
}
var selector, elems, makeActive;
selector = '.card__heading-img img';
elems = document.querySelectorAll(selector);
makeActive = function () {
for (var i = 0; i < elems.length; i++)
elems[i].classList.remove('active');
this.classList.add('active');
};
for (var i = 0; i < elems.length; i++)
elems[i].addEventListener('mousedown', makeActive);
var img = [].slice.call(document.querySelectorAll('.card__heading-img img'));
document.querySelector('.btn').addEventListener('click', function(e) {
e.preventDefault();
var curImg = img.filter(function(el) {
return el.classList.contains('active');
})[0],
curIndx = img.indexOf(curImg),
nextIndx = curIndx + 1 >= img.length ? 0 : curIndx + 1;
curImg.classList.remove('active');
img[nextIndx].classList.add('active');
}, false);
document.querySelector('.btn').addEventListener('click', function(e) {
var last = document.querySelector('.card__heading-img .active');
(document.querySelector('.card__heading-img .active+img') || document.querySelector('.card__heading-img img:first-child')).classList.add('active');
last.classList.remove('active');
})
А кнопки лучше делать не ссылками, а специально для этого предназначенным тегом button. Потому как пользователь, например, попробовать открыть в новой вкладке может.. ну, и можно сэкономить на e.preventDefault(), так как клик по отфонарной кнопке вне формы (и даже внутри с указанным type="button") никакого действия не вызовет.. Мало того, можно временно отменить клик, установив кнопке аттрибут или свойство disabled, заодно, и css можно соответствующий задать..