Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zagnieżdżenie pętli
Krisu
post 23.08.2016, 08:52:27
Post #1





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 30.03.2006
Skąd: Żary

Ostrzeżenie: (0%)
-----


  1. handlers.each(function(index){
  2.  
  3. for (i = 2; i <= items.length; i++) {
  4.  
  5. this.cls = (index === 0 ) ? 'tab first-tab active' : 'tab tab'+ [i] + ''
  6.  
  7. }
  8.  
  9. title += '<li class="' + this.cls + '">'
  10. title += $(this).html()
  11. title += '</li>'
  12.  
  13. });


Mam taką oto funkcję, docelowo chodzi mi o to by kolejne listy li przyjmowały w nazwie klasy numery kolejne. W chwili gdy pętlę zrobię w ten sposób zwraca mi tylko końcową wartość pętli. Niestety na JS za bardzo się nie znam i nie mam pomysłu jak zagnieździć pętle by dobrze zliczała.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
trueblue
post 23.08.2016, 09:30:07
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Zwraca końcową, bo umieściłeś fragment kodu poza pętlą.

Jeśli znasz się na PHP, to tam działanie pętli jest analogiczne.


--------------------
Go to the top of the page
+Quote Post
Krisu
post 23.08.2016, 09:33:34
Post #3





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 30.03.2006
Skąd: Żary

Ostrzeżenie: (0%)
-----


  1. handlers.each(function(index){
  2.  
  3. title += '<li class="' + for (i = 2; i <= items.length; i++) { this.cls = (index === 0 ) ? 'tab first-tab active' : 'tab tab'+ [i] + '' } + '">'
  4. title += $(this).html()
  5. title += '</li>'
  6.  
  7. });


Wiem o tym, najchętniej zbudowałbym to w ten sposób jak powyżej i pewnie byłoby po problemie, ale nie wiem jak w JS składniowo poprawnie to zapisać...
Go to the top of the page
+Quote Post
trueblue
post 23.08.2016, 09:39:16
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A nie myślałeś, aby wstawić te 3 linijki przed zamknięciem klamry pętli?


--------------------
Go to the top of the page
+Quote Post
Krisu
post 23.08.2016, 09:49:45
Post #5





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 30.03.2006
Skąd: Żary

Ostrzeżenie: (0%)
-----


Wówczas rzeczywiście działa, jednak funkcja także powiela same zakładki i zamiast listy o nazwie artykuł 1, artykuł 2, artykuł 3, mam listy artykuł 1, artykuł 1, artykuł 1, artykuł 2, artykuł 2, artykuł 2 itd.

Ten post edytował Krisu 23.08.2016, 09:50:39
Go to the top of the page
+Quote Post
trueblue
post 23.08.2016, 09:52:37
Post #6





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Co masz w handlers, co masz w items?
Sam each to już struktura pętli, a w niej tworzysz drugą.

Zobacz ten przykład:
https://jsfiddle.net/waawL47y/

Nie wiem czy jest poprawny, bo Ty tworząc pętlę w jednej iterujesz chyba po wszystkich elementach <li> (zakładam, że w handlers są wszystkie), a w drugiej iterujesz od 3-ego elementu (for).

Ten post edytował trueblue 23.08.2016, 10:01:42


--------------------
Go to the top of the page
+Quote Post
Krisu
post 23.08.2016, 10:10:55
Post #7





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 30.03.2006
Skąd: Żary

Ostrzeżenie: (0%)
-----


Dziękuję bardzo za pomoc smile.gif Wystarczyło zrezygnować z fora i skorzystać ze zmiennej index

  1.  
  2. handlers.each(function(index){
  3.  
  4. this.cls = (index === 0 ) ? 'tab first-tab active' : 'tab tab'+ [index] + ''
  5.  
  6. title += '<li class="' + this.cls + '">'
  7. title += $(this).html()
  8. title += '</li>'
  9.  
  10. });


Ten post edytował Krisu 23.08.2016, 10:14:31
Go to the top of the page
+Quote Post
trueblue
post 23.08.2016, 10:22:05
Post #8





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A co Ty robisz potem z title?


--------------------
Go to the top of the page
+Quote Post
Krisu
post 23.08.2016, 13:07:46
Post #9





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 30.03.2006
Skąd: Żary

Ostrzeżenie: (0%)
-----


  1. $(tabs_buttons).find('.tabs_container').append( title )
  2. $(items).find('.title').remove()
Go to the top of the page
+Quote Post
trueblue
post 23.08.2016, 13:22:38
Post #10





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Nie wiem co masz w tabs_buttons oraz w items.
Jednym zdaniem, jeśli dodajesz klasy do istniejących elementów (ew. usuwasz inne klasy z tych elementów), to robisz to na okrętkę.


--------------------
Go to the top of the page
+Quote Post
Krisu
post 23.08.2016, 13:30:37
Post #11





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 30.03.2006
Skąd: Żary

Ostrzeżenie: (0%)
-----


Jeżeli chcesz dokładnie wiedzieć do czego było mi to potrzebne napiszę na PW, ale w 100% mi pomogłeś i osiągnąłem zamierzony efekt. Po prostu nie znam się na JS, wolę pisać w PHP.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 02:59