2016-03-11 2 views
0

Я пытаюсь выполнить итерацию с помощью getElementsByClassName, но эффект, который я пытаюсь достичь, влияет на все элементы одновременно.Javascript loop over getElementsByClassName

Как я могу заставить его работать 1 элемент за салфетки?

HTML:

<div id="recog" class="cr-wrap"> 
      <div id="slide"> 
       <div class="card item"><img src="mc.svg"></div> 
       <div class="card item"><img src="paypal.svg"></div> 
       <div class="card item"><img src="visa.svg"></div> 
      </div> 
     </div> 

ЯШ:

var wrap = document.getElementById('recog'); 
var swiper = new Hammer(wrap); 
swiper.on('swipeleft', function(){  
var items = document.getElementsByClassName('item');  
for (var i=0; i < items.length ; i++){ 
    items[i].classList.add('gone');  
} 
}); 
+1

Почему бы не повлиять на все элементы '.item', вы не исключаете их? – adeneo

+0

Я новичок, пытаясь узнать ваниль js. не могли бы вы объяснить, пожалуйста, или посоветовать мне? .. Спасибо –

+0

Тогда вам придется объяснить, что вы пытаетесь сделать лучше. 'document.getElementsByClassName ('item')' получает все элементы с классом '.item' в документе, не то, что вы хотите? – adeneo

ответ

0

Может быть, это было бы лучше, используя querySelectorAll, где вы можете сузить список попаданий даже больше.

var wrap = document.getElementById('recog'); 
var swiper = new Hammer(wrap); 
swiper.on('swipeleft', function(){ 
    var items = wrap.querySelectorAll('.item'); 
    for (var i=0; i < items.length ; i++){ 
    items[i].classList.add('gone'); 
    } 
}); 

Следует отметить: При использовании wrap.querySelectorAll('.item');, он предназначаться только item «S внутри recog элемента


Update

Если вы хотите только один пункт за взмахом, сделать как это

var wrap = document.getElementById('recog'); 
var swiper = new Hammer(wrap); 
swiper.on('swipeleft', function(){ 
    var item = wrap.querySelector('.item'); 
    item.classList.add('gone'); 
}); 

Update 2

Если вы хотите только прокатывается деталь, вы должны быть в состоянии сделать так, но это зависит от того, как молотка передать цель вперед.

var wrap = document.getElementById('recog'); 
var swiper = new Hammer(wrap); 
swiper.on('swipeleft', function(e){ 
    e.target.classList.add('gone'); 
}); 

Если это не сработает, вероятно, вам потребуется добавить swiper для каждого элемента.

+0

, к сожалению, он все еще добавляет класс ко всем элементам:/ –

+0

Что вы подразумеваете под целыми элементами? –