logo
27.05.2020 19:39
1
Ahoj, chcel by som poradit, ak je to vobec mozne takto riesit.

Na url adrese su udaje miest, asi 10 a vyzeraju nejako takto:
Kód:
[{"cas":1590599786960,"celkom":690693,"dnes":6951,"neplatne":34031,"mesto":"Bratislava"},
{"cas":1590599786968,"celkom":8747,"dnes":6,"neplatne":124,"mesto":"Kosice"}]
Na webe nasledne script ktory tie udaje vypise pre dane mesto (nejde o nic verejne, len info pre par ludi)
Kód:
		$.getJSON(url, function(data, status) {
			$("#ba-celkom").append(eNum(data[0]["celkom"]));
			$("#ba-dnes").append(eNum(data[0]["dnes"]));
			$("#ba-neplatne").append(eNum(data[0]["neplatne"]));
            
                        $("#ke-celkom").append(eNum(data[1]["celkom"]));
			$("#ke-dnes").append(eNum(data[1]["dnes"]));
			$("#ke-neplatne").append(eNum(data[1]["neplatne"]));
		});
Teda data0 vypise udaje pre prvu položku, data1 pre druhu atd, to vsetko funguje ako treba ale problem je ze niekedy su tie mesta na url adrese v inom poradi a udaje teda nesedia k mestu.

Da sa to data[0] napr nahradit za mesto napr. Bratislava a k tomu ostatne udaje? Ak bude Bratislava, vypise sa celkom, dnes, neplatne len pre to mesto a teda by nevadilo ak na zdrojovej url budu pomiesane, dakujem za radu

Co se právě děje na Webtrhu?

27.05.2020 19:55
2
Můžeš to vyřešit třeba přes vazební objekt. Klíč je název města, který dostaneš z API, a hodnota je zkratka, kterou používáš v ID elementu.

Kód:
const mestoToAbbr = {"Bratislava": "ba", "Kosice": "ke"};

$.getJSON(url, function(data, status) {
    for (const item of data) {
        if (mestoToAbbr[item["mesto"]] === undefined) {
            // tady ošetři, co se má stát, když nemáš město definované ve vazbě
        }

        $("#" + mestoToAbbr[item["mesto"]] + "-celkom").append(eNum(item["celkom"]));
        $("#" + mestoToAbbr[item["mesto"]] + "-dnes").append(eNum(item["dnes"]));
        $("#" + mestoToAbbr[item["mesto"]] + "-neplatne").append(eNum(item["neplatne"]));
    }
});
27.05.2020 19:58
3
s js uz moc nerobim takze mozno to nie je uplne spravne

for (let i = 0; i++; i < data.length) {
let prefix;
switch (data[i].mesto) {
case "Bratislava":
prefix = "ba";
case "Košice":
prefix = "ke";
}


$("#" + prefix + "ba-celkom").append(eNum(data[i]["celkom"]));
$("#" + prefix + "ba-dnes").append(eNum(data[i]["dnes"]));
$("#" + prefix + "-neplatne").append(eNum(data[i]["neplatne"]));
}
28.05.2020 07:01
4
Původně odeslal Petr Hejda
Můžeš to vyřešit třeba přes vazební objekt. Klíč je název města, který dostaneš z API, a hodnota je zkratka, kterou používáš v ID elementu.

Kód:
const mestoToAbbr = {"Bratislava": "ba", "Kosice": "ke"};

$.getJSON(url, function(data, status) {
    for (const item of data) {
        if (mestoToAbbr[item["mesto"]] === undefined) {
            // tady ošetři, co se má stát, když nemáš město definované ve vazbě
        }

        $("#" + mestoToAbbr[item["mesto"]] + "-celkom").append(eNum(item["celkom"]));
        $("#" + mestoToAbbr[item["mesto"]] + "-dnes").append(eNum(item["dnes"]));
        $("#" + mestoToAbbr[item["mesto"]] + "-neplatne").append(eNum(item["neplatne"]));
    }
});
dakujem toto funguju spravne pre mesta, ale len s jednym riadkom $("#" + mestoToAbbr[item["mesto"]] + "-celkom").append(eNum(item["celkom"])); ... ak su tam dalsie 2 tak uz sa nezobrazi nic, je to prazdne, v com moze byt problem?
28.05.2020 11:53
5
Původně odeslal kajo888
ak su tam dalsie 2 tak uz sa nezobrazi nic, je to prazdne, v com moze byt problem?
To vypadá jako kdyby neexistovaly ty elementy s ID "ba-dnes", "ba-neplatne", "ke-dnes" a "ke-neplatne".

Vypisuje ti něco konzole v prohlížeči? Pokud odkazuje na konkrétní řádek, překopíruj sem prosím i řádky +- 1 kolem toho.
28.05.2020 12:58
6
Pozeram ze ono to funguje ako ma takze dakujem velmi pekne ... problem je ReferenceError: eNum is not defined at Object.success ... ak vymazem eNum( tak je to ok, na rozdelovanie cisel som tam dal inu funkciu, povodne tam bolo function eNum(x){return x.toLocaleString('sk')}