Autor | Zpráva | ||
---|---|---|---|
marian80 Profil |
#1 · Zasláno: 30. 12. 2019, 17:45:24
Zdravím,
potreboval by som dynamicky, teda programovo, vytvoriť takéto pole: var markersOnMap = [{ placeName: "Australia (Uluru)", placeDesc: "Popis pre Uluru", placeImg: "https://www.dw.com/image/41191418_303.jpg", LatLng: [{ lat: -25.344, lng: 131.036 } ] }, { ... dalšie mesto, popis, img,súradnice } ]; Viete mi s tým pomôcť? Dáta budú v premenných, napr. var nazovMesta = "Australia (Uluru)"; Ďakujem. |
||
lionel messi Profil |
marian80:
Ak som to pochopil správne, hľadáš formát JSON. Má naozaj široké využitie v JavaScripte aj PHP. JSON a Javascript Funkcie pre prácu s JSON v PHP |
||
marian80 Profil |
#3 · Zasláno: 30. 12. 2019, 18:01:38
lionel messi:
tak asi toto :-) ale s tým nemám absolútne žiadne skúsenosti. Vedel by si mi pomôcť? |
||
RastyAmateur Profil |
marian80:
Není jasné, co tedy máš a co budeš potřebovat. V ukázce máš pole měst, ale jen jednu proměnnou var nazovMesta ? Nebo to ta proměnná var nazovMesta bude v nějakém cyklu a její obsah bude jiný v každém průchodu?
Když máš výše uvedený objekt, k proměnným přistupuješ pomocí tečkové notace, v případě pole normálně přes index. Případně lze použít "index syntax" i pro klíče prvků objektu. Můžeš tak k hodnotám jak přistupovat, tak je nastavovat. Ukázka: var markersOnMap = [ ... ]; // Viz tvá ukázka // Vypiš placeName markersOnMap[0].placeName; markersOnMap[0]["placeName"]; // Uprav placeName markersOnMap[0].placeName = "Australia (Uluru) [edited]"; markersOnMap[0]["placeName"] = "Australia (Uluru) [edited]"; To markersOnMap je prosté pole objektů, tak se k tomu tak i chováš. Pro přidání nového města napíšeš jednoduše:
markersOnMap[] = { placeName: "Bar (Foo)", placeDesc: "Popis pre Bar Foo", placeImg: "...", ... } Zmiňovaný JSON znamená JavaScript Object Notation a víceméně je to prostě jen řetězec znaků, který se pak dá nějak překonvertovat právě do objektu. Používá se to v případě, kdy si ta data taháš dynamicky ze serveru pomocí nějakých dotazů. Ovšem když píšeš, že: „Dáta budú v premenných, napr. var nazovMesta = "Australia (Uluru)";“, tak si nejsem úplně jistý, jestli to potřebuješ...
|
||
marian80 Profil |
RastyAmateur:
Ako píšeš, tie premenné var nazovmesta, var popismesta, var obrazok, var suradnice budú v cykle a obsah bude vždy iný. Polia viacmenej chápem, idem to skúsiť nejako vytvoriť ten skript, len stále neviem ako tam mám priradiť tie súradnice, je to niečo ako dvojrozmerné pole? RastyAmateur: Skúsil som toto: var markersOnMap = [{ placeName: "Australia (Uluru)", placeDesc: "Popis pre Uluru", placeImg: "https://www.dw.com/image/41191418_303.jpg", LatLng: [{ lat: 1, lng: 1 }] } ]; markersOnMap[] = { placeName: "Bar (Foo)", placeDesc: "Popis pre Bar Foo", placeImg: "...", LatLng: [{ lat: 2, lng: 2 }] } alert (markersOnMap[1].placeName); ale vyhadzuje chybu Unexpected token ']' na riadku: markersOnMap[] = { |
||
lionel messi Profil |
marian80:
Pokiaľ viem, v JS sa nedá pridať prvok do poľa pomocou nazovpola[] ako v PHP, ale pre pridanie na koniec poľa treba použiť metódu https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/push (ak chceme pridať na začiatok poľa, použijeme metódu unshift):
markersOnMap.push = { placeName: "Bar (Foo)", placeDesc: "Popis pre Bar Foo", placeImg: "...", LatLng: [{ lat: 2, lng: 2 }] } |
||
marian80 Profil |
#7 · Zasláno: 31. 12. 2019, 00:03:57
lionel messi:
ďakujem, práve som na to prišiel. Už mi to funguje tak ako som chcel. |
||
Časová prodleva: 4 měsíce
|
|||
lionel messi Profil |
#8 · Zasláno: 10. 5. 2020, 17:59:18
lionel messi:
„Pokiaľ viem, v JS sa nedá pridať prvok do poľa pomocou nazovpola[] ako v PHP“
Opravujem svoju odpoveď neúplnú a zavádzajúcu odpoveď, pretože pridanie nového prvku do poľa pomocou hranatých zátvoriek v JS možné je. Na rozdiel od PHP však v nich treba priamo uviesť aj konkrétny index. Keďže všetky polia v JS sú číslované od nuly vzostupne, nový prvok sa v tomto prípade pridá do poľa pole pod indexom pole.length (metóda length vracia počet prvkov poľa).
Čiže ekvivalentná možnosť ku kódu v [6] je: markersOnMap[markersOnMap.length] = { placeName: "Bar (Foo)", placeDesc: "Popis pre Bar Foo", placeImg: "...", LatLng: [{ lat: 2, lng: 2 }] } |
||
Časová prodleva: 4 roky
|
0