Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pętla - pewnie podstawowy problem
faketa
post 2.07.2012, 21:48:05
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 2.07.2012

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


Witam

JS piszę jedynie okazjonalnie stąd proszę o wyrozumiałość. Problem mam następujący:
skrypt w pętli nanosi na mapę google markery poprzez Geocoder, odpowiedź z Geocodera następuje z opóźnieniem dlatego dałem metodę "checkGeocodingComplete" sprawdzającą czy już Geocoder zakończył codowanie dla wszystkich markerów, jeśli tak to wykonywana jest pętla, która dla każdego LI na stronie przypisuje akcję myszy do animacji markera. Problem jest w 3 pętli zawartej w metodzie "attachMarkerToLink", która przeskakuje przez wszystkie markery sprawdzając ich kod pocztowy i jeśli jest on zgodny z kodem przypisanym do LI to powinien wykonać break pętli. W moim przykłądzie jest 10 markerów, a każdy z nich ma swój kod pocztowy - kilka z nich się powtarza. Zastanawiam się czemu ostatnia pętla wykonuje się jedynie 6 razy a nie 10 - tyle ile jest markerów.

  1. geocoder.geocode( { 'address': activePostcode}, function(gresults, status) {
  2.  
  3. if (status == google.maps.GeocoderStatus.OK) {
  4.  
  5. var marker = new google.maps.Marker({ map: map, position: gresults[0].geometry.location, title: gresults[0].address_components[0].long_name });
  6. markers.push (marker);
  7. checkGeocodingComplete (results, markers);
  8.  
  9. }
  10.  
  11. });
  12.  
  13. function checkGeocodingComplete (results, markers) {
  14.  
  15. if (results == markers.length) {
  16.  
  17. for (g=0;g<results;g++)
  18. {
  19. var activeId = "jobpostcode" + (g + 1);
  20. var activePostcode = document.getElementById(activeId).value;
  21.  
  22. attachMarkerToLink (markers, activePostcode, g);
  23.  
  24. }
  25.  
  26. }
  27. }
  28.  
  29. function attachMarkerToLink (markers, activePostcode, stepper) {
  30.  
  31. for (j=0; j < markers.length; j++)
  32. {
  33. var marker = markers[j];
  34.  
  35. if (activePostcode == marker.title) {
  36.  
  37. //attach function
  38. break;
  39.  
  40. }
  41. }
  42. }
  43.  
Go to the top of the page
+Quote Post
kamil4u
post 2.07.2012, 23:15:56
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Umieść tu demo: http://jsfiddle.net/


--------------------
Go to the top of the page
+Quote Post
gr56
post 4.07.2012, 09:38:04
Post #3





Grupa: Zarejestrowani
Postów: 77
Pomógł: 15
Dołączył: 19.11.2011

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


  1. for (g=0;g<results;g++)

Czy tu nie powinno być results.length?
Go to the top of the page
+Quote Post
krowal
post 4.07.2012, 09:51:30
Post #4





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

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


Przecież jak dasz break w pętli to zostanie ona zakończona bez iteracji po kolejnych elementach. Uprzedzam pytanie: nie, break nie jest po to by wyjść z bloku if'a wink.gif


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
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: 16.08.2025 - 21:24