![]() |
![]() ![]() |
![]() |
-zasadowy- |
![]()
Post
#1
|
Goście ![]() |
Cześć, zrobiłem sobie w PHP skrypt, który ściągane dane z tabeli i tworzy XML, ale tutaj mam problem, bo struktura mojego XML chyba nie jest odpowiednia:
Następnie w JS, powinna być pętla, która leci przez wszystkie kraje po kolei, najpierw pobiera ich ISO, a następnie jeśli np. visitors > 50, to zmienia tło elementu z takim ID jak ma ISO na czarny, jesli visitors < 50, to zmienia na szary. No i nie wiem jak zrobić to tak, aby pętla działała tak jak napisałem. Kombinuję, kombinuję i nic na nic nie mogę wpaść, bo krajów z kodem ISO jest 249, więc najlepiej byłoby to zrobić pętlą, a nie kopiować kod 249 razy i zmieniać iso na af, ax, au, al itd... |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 197 Pomógł: 24 Dołączył: 22.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Czemu nie możesz użyć JSON? Jeżeli to jedyne dane, to można zrobić np. tak:
Kod { Dostęp do takich danych jest śmiesznie łatwy:"af":5, "ax":4, "al":0 } Kod for (var i in countries) Natomiast jeśli więcej danych to można też na conajmniej dwa sposoby: Kod { Względnie jeśli chcesz w tablicy, to:"af":{ "name":"", "visitors":5}, "ax":{ "cośtam":"", "visitors":3} } Kod [ jQuery ma obsługę JSON przez AJAX, chodzi jak złoto. Wszystko w zasadzie podane na tacy, nie musisz niczego więcej robić.
{ "iso":"af", "visitors":5" },{ "iso":"ax", "visitors":4} ] |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Pokaż jak próbowałeś stworzyć tą pętlę. Struktura XML-a jest poprawna, nie powinieneś mieć z niczym problemu.
|
|
|
-zasadowy- |
![]()
Post
#4
|
Goście ![]() |
nie no, to są jedyne dane, po prostu mam kod iso kraju, np. pl i liczbę osób z danego kraju aktualnie na stronie.
{"iso_countries":[{"af":"0"},{"ax":"0"},{"al":"0"} itd...]} to jest budowa mojego pliku json teraz jak go otworzyłem no i teraz powinienem przejść przez wszystkie elementy w ciągu iso_countries, to ok, zadeklaruję sobie, że i=0 czyli początek ciągu, no i for aż dojdzie do 248, ale teraz jest pytanie, jak jestem w 1 elemencie ciągu, to powinienem wziąć jakoś af z niego i jego wartość, czyli 0, bo jeśli np af będzie mieć 50, to będę musiał zrobić getEmelentByID, aby zmienić mu kolor, to będę do jakiejś zmiennej musiał przypisać aktualną zawartość ciągu, czyli kod iso i visitors, aby w razie czego, jeśli visitors jest > 0, to znajdź ID z takim kodem iso, jaki jset przypisany teraz do zmiennej. To już tego nie łapie, jak to zrobić. |
|
|
-zasadowy- |
![]()
Post
#5
|
Goście ![]() |
No i jeszcze do tamtego, to czytałem właśnie, że jQuery obsługuje JSON bez problemu, dlatego na początku chciałem tak to zrobić, ale na innym forum polecili mi XML
![]() Crozin, problem w tym, że ja nie mam pojęcia, jak taką pętlę zrobić, dlatego tutaj się odezwałem, wiem jak wziąć dane, zrobić sobie XML, lub JSON, ale jak zrobić pętle na podstawie tych danych, to już dla mnie czarna magia... |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
https://www.google.pl/search?q=javascript+t...93&ie=UTF-8 - standardowe operacje na drzewie DOM.
Ten post edytował Crozin 13.01.2014, 12:10:59 |
|
|
-zasadowy- |
![]()
Post
#7
|
Goście ![]() |
Zrobiłem to z JSON, no i struktura JSON jest
{"iso_countries":[{"country":"af","visitors":"0"},{"country":"ax","visitors":"0"},{"country":"al","visitors":"0"} ... itd ]} Taki mam kod jak patrzyłem na przykładach rozwiązań z internetu, no i wiem, że nie działa, bo kolor w SVG się nie zmienia, wiecie co jest nie tak?
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Jakbyś włączył konsolę błędów, zobaczyłbyś prawdopodobnie komunikat, o próbie użycia nieistniejącej zmiennej json (chodziło Ci zapewne o data).
2. 50 > visitors > 1 taka składnia nie jest w ogóle poprawna. |
|
|
-zasadowy- |
![]()
Post
#9
|
Goście ![]() |
hah no tak co do tego if'a
![]() $(document).ready(function() { $.getJSON("results.json", function(data) { for(var key in json) { var iso = data[key].country; var visitors = data[key].visitors; if( visitors > 1 && 50>=visitors) { document.getElementById(iso).style.fill="#94d31b"; } else if( visitors > 50 && 500>=visitors) { document.getElementById(iso).style.fill="#94d31b"; } } }); }); ale i tak nie działa, nawet jak wstawię w ByID("pl"), aby zmieniło kolor, to kolor i tak się nie zmienia, dodam, że te ID jest w pliku SVG, może to dlatego? Poza tym, czy samo wstawienie (iso) jest poprawne w szukanie po ID? |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat 1. Jakbyś włączył konsolę błędów, zobaczyłbyś prawdopodobnie komunikat, o próbie użycia nieistniejącej zmiennej json (chodziło Ci zapewne o data).
|
|
|
-zasadowy- |
![]()
Post
#11
|
Goście ![]() |
ech... no tak, poprawiłem to teraz
![]() ![]() Konsola nie zwraca już błędów, ale kolor się nie zmienia. Wrzuciłem document.getElementById(pl).style.fill="#94d31b"; przed if'a to pokazuje, że takiego elementu jak pl nie ma, a jak wstawiam do ifa to błędu nie ma, ale kolor i tak się nei zmienia, czyli if w ogóle jakby nie działał, bo gdyby działał, to wywaliłby ten sam błąd, że takiego elementu nie ma
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Twoje warunki wewnątrz IF-ów są trochę bez sensu, chyba pomieszały Ci się operatory większości i mniejszości.
2. "iso" to zwykły tekst, iso to zmienna. 3. W obu przypadkach nadajesz ten sam kolor. |
|
|
-zasadowy- |
![]()
Post
#13
|
Goście ![]() |
Wiem, że nadaję ten sam kolor, bo skopiowałem to, aby w ogóle cokolwiek zmieniał. Musiałem nadać data = data.iso_countries, no i teraz przechodzi już przez if'a, no, ale teraz mam taki błąd
TypeError: document.getElementById(...) is null (no source for debugger eval code)
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 8 Dołączył: 22.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Proszę bardzo
![]() |
|
|
-zasadowy- |
![]()
Post
#15
|
Goście ![]() |
Dzięki! Jak będę przy laptopie to od razu sprawdzę to co podałeś na bin'ie
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 23.06.2025 - 05:18 |