Mam następujący kod:

var transitionsSettingsClass = document.getElementsByClassName("transitionsSettings");  
var transitionsSettingsClassLenght = transitionsSettingsClass.length;  
for (i=0; i < transitionsSettingsClassLenght; i++);   
{   
    transitionsSettingsClass[i].setAttribute("data-transition",transitionsSettings);    
};  

Wiem, że przejściaSsetingsClassLenght = 6, ponieważ sprawdziłem go z alertem. Ale kiedy umieściłem alarmowy cykl w cyklu, pokazuje tylko 1-ty (powinien pokazać się 6 razy). Również przejście danych atrybutów nie jest ustawiony. Ale kiedy zastąpię "I" wewnątrz przejściaSitionsClassClassClassclassclassclassclassclass [0] mój pierwszy element zmienia się i działa. Ten skrypt ma zmienić przejście danych atrybutów w 6 elementach.

1
horin 12 wrzesień 2012, 17:22

4 odpowiedzi

Najlepsza odpowiedź

Usuń ; na końcu

for (i=0; i < transitionsSettingsClassLenght; i++);   

for tutaj polecenia tylko kod przed {x1}}, to nic.

Polecam, aby korzystać z najczęstszego stylu JavaScript, Jak wyjaśniono przez Google, ponieważ pomaga uniknąć tego rodzaju błędów.

9
Denys Séguret 8 luty 2013, 07:39

Poniższy kod jest interpretowany w następujący sposób:

for (i=0; i < transitionsSettingsClassLenght; i++);
{
transitionsSettingsClass[i].setAttribute("data-transition",transitionsSettings);
};

Pierwsza linia:
{x0}}
wykonana jest 6 razy, ponieważ JavaScript uważa za jedno stwierdzenie. Potem napotyka

{
transitionsSettingsClass[i].setAttribute("data-transition",transitionsSettings);
};

który jest wykonywany raz jako blok. Wyjmowanie ; z końca pętli w poszukiwaniu pętli rozwiąże problem.

0
Sharath 12 wrzesień 2012, 13:45

Czy próbowałeś z jQuery każdą metodą?

 $('.transitionsSettings').each(function(index) {
        $(this).setAttribute("data-transition",transitionsSettings);
    });
0
hjuster 12 wrzesień 2012, 13:24

Tak jak sidenote:


We wszystkich nowoczesnych przeglądarkach możesz ustawić data- atrybuty, dzwoniąc

node.dataset.transition = transitionsSettings;
0
jAndy 12 wrzesień 2012, 13:26