| 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: 5 let
|
|||
0