Ajax, Json, jQuery: použití value jako hodnota atributu

ZAJDAN

  • *****
  • 2 087
    • Zobrazit profil
    • E-mail
do Ajax success získám json pole a pomocí jquery ho vykresím do tabulky:

Kód: [Vybrat]
success: function(json) { 
                                    createTable1(json);
}

Kód: [Vybrat]
function createTable1(json) {
var eTable ="<table id='kw-list' style='margin-left:auto; margin-right:auto;'>";
    eTable +="<thead><tr><th colspan='10' id='listOfKW'>List of the KW</th></tr>";
    eTable +="<tr style='background-color:#d0dbe4;'><th class='listOfKW'>Letter</th><th class='listOfKW'>Commission</th><th class='listOfKW'>Status</th><th class='listOfKW'>Date</th><th class='listOfKW'>KW</th><th id='t-p' class='listOfKW'>P</th><th id='t-cad' class='listOfKW'>CAD</th><th class='listOfKW'>NEST</th><th class='listOfKW'>SAP</th><th class='listOfKW'>SENT</th></tr>";
    eTable +="</thead><tbody>";
$.each(json,function(index, row){
  eTable += "<tr>";
  $.each(row,function(key,value){
    eTable += "<td class='" +key+" "+value+ "' style='font-size:16px;'>"+value+"</td>";
       });
  eTable += "</tr>";
});
eTable +="</tbody></table>";
$('#eachTable').html(eTable);
      }

Hledám způsob, jak hodnotu jednoho ze sloupců 'Items' dosadit jako hodnotu attributu
něco jako:
Kód: [Vybrat]
onmouseover", "nhpup.popup('"+json[i].Items+"')" )
« Poslední změna: 09. 05. 2019, 19:39:42 od Petr Krčmář »
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.


3ugeene

Re:Ajax ->Json->jQuery--->použití value jako hodnota atributu
« Odpověď #1 kdy: 09. 05. 2019, 15:30:27 »
trochu upresnit by neslo? Ja mam sice kratky vedeni, ale moc nechapu, co kde chces pouzit.

Napis, co ti chodi v datecj v JSON-u a co presne chces docilit?


Kód: [Vybrat]
onmouseover", "nhpup.popup('"+json[i].Items+"')" )

patri k cemu? Neni to kompletni a standardni JQ event to neni, a cistej javascript takovou syntax snad nema

3ugeene

Re:Ajax ->Json->jQuery--->použití value jako hodnota atributu
« Odpověď #2 kdy: 09. 05. 2019, 15:31:48 »
trochu upresnit by neslo? Ja mam sice kratky vedeni, ale moc nechapu, co kde chces pouzit.

Napis, co ti chodi v datech v JSON-u a co presne chces docilit?


Kód: [Vybrat]
onmouseover", "nhpup.popup('"+json[i].Items+"')" )

patri k cemu? Neni to kompletni a standardni JQ event to neni, a cistej javascript takovou syntax snad nema. A v items je co? pole? String?


Pokud jsou ta data treba nejaky ID, dela se to tak, ze to hodis treba kazdymu radku do data atributu napr:

Kód: [Vybrat]

  eTable += "<tr>";
  $.each(row,function(key,value){
    eTable += "<td data-id=" + value + " class='" +key+" "+value+ "' style='font-size:16px;'>"+value+"</td>";
       });
  eTable += "</tr>";

s tim, ze nad celou tabulkou udelas event:

Kód: [Vybrat]

$('TABLE#kw-list').on('click', 'TR', e => {
    const id = $(e.currentTarget).data('id')
    alert(id)
});



Btw

Kód: [Vybrat]
success: function(json) { 
                                    createTable1(json);
}

jde zapsat jako:

Kód: [Vybrat]
success: createTable1

a doporucuji uz nejakej pouzivat template literals, protoze skladani stringu timhle stylem je dost neprehledny
« Poslední změna: 09. 05. 2019, 15:37:47 od robin martinez »

ZAJDAN

  • *****
  • 2 087
    • Zobrazit profil
    • E-mail
Re:Ajax ->Json->jQuery--->použití value jako hodnota atributu
« Odpověď #3 kdy: 09. 05. 2019, 15:45:22 »
Napis, co ti chodi v datecj v JSON-u a co presne chces docilit?
Vytvoři se tabulka a v ní co klíč/key to nový element <td>
Kód: [Vybrat]
eTable += "<td class='" +key+" "+value+ "' style='font-size:16px;'>"+value+"</td>";
jeden z těch klíčů je Items a jeho hodnotu/value bych chtěl použít v attributu onmouseover na tom vytvořeném <td>
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

Re:Ajax ->Json->jQuery--->použití value jako hodnota atributu
« Odpověď #4 kdy: 09. 05. 2019, 16:25:15 »
V jQuery se posluchači na událost onmouseover navěšují zavoláním metody jQuery mouseover().

Ten váš element td tedy sestavíte pomocí jQuery (ne takhle nepřehledně textově) a pak na něj pověsíte tu událost.
« Poslední změna: 09. 05. 2019, 16:28:16 od Filip Jirsák »


ZAJDAN

  • *****
  • 2 087
    • Zobrazit profil
    • E-mail
Re:Ajax ->Json->jQuery--->použití value jako hodnota atributu
« Odpověď #5 kdy: 09. 05. 2019, 16:36:00 »
V jQuery se posluchači na událost onmouseover navěšují zavoláním metody jQuery

problém není s eventem...ten se vyvolá
já hledám způsob jak si vzít konkrétní klíč a jeho hodnotu a tu vsadit do attributu html elementu
běžně používám:
< span onmouseover="nhpup.popup('tralala');">something</span>
potřeboval bych namísto 'tralala' dosazovat hodnotu konkrétního klíče
« Poslední změna: 09. 05. 2019, 16:39:04 od ZAJDAN »
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

3ugeene

Re:Ajax ->Json->jQuery--->použití value jako hodnota atributu
« Odpověď #6 kdy: 09. 05. 2019, 17:07:47 »
tak jinak - co presne ti ted nefunguje? Tim myslim, co to jako dela/nedela, co pise console? Nejaky chyby?

Re:Ajax ->Json->jQuery--->použití value jako hodnota atributu
« Odpověď #7 kdy: 09. 05. 2019, 17:10:03 »
problém není s eventem...ten se vyvolá
já hledám způsob jak si vzít konkrétní klíč a jeho hodnotu a tu vsadit do attributu html elementu
běžně používám:
< span onmouseover="nhpup.popup('tralala');">something</span>
potřeboval bych namísto 'tralala' dosazovat hodnotu konkrétního klíče
Ne, nechcete vsazovat hodnotu do atributu. Chcete nastavit posluchače události, který zavolá nějakou funkci a té předáte ten parametr.

Kód: [Vybrat]
const spanElement = $('<span>');
const value = 'tralala';
$(spanElement).mouseover(function event() {
  nhpup.popup(value);
});

Mimochodem, měl byste jednodušší použít na to nějaký framework, např. Vue, než to takhle patlat sám s jQuery.

BoneFlute

  • *****
  • 1 987
    • Zobrazit profil
Re:Ajax ->Json->jQuery--->použití value jako hodnota atributu
« Odpověď #8 kdy: 09. 05. 2019, 20:19:34 »
já hledám způsob jak si vzít konkrétní klíč a jeho hodnotu a tu vsadit do attributu html elementu
běžně používám:
< span onmouseover="nhpup.popup('tralala');">something</span>
potřeboval bych namísto 'tralala' dosazovat hodnotu konkrétního klíče

A to "tralala" bude kde?

Re:Ajax, Json, jQuery: použití value jako hodnota atributu
« Odpověď #9 kdy: 09. 05. 2019, 20:56:35 »
Hochu, dyt to mas spatne by design, ach jo, proc to tak delas. Pouzij React, nebo Angular (lehci je jednicka), v obojim bys to co chces udelal na brnk. Ty potrebujes neco, v cem muzes Templatovat, a od toho jsou ty 2 frameworky. Uz chapu ten tvuj podpis, tebe asi casto nekdo odrazuje, kdyz delas tak by design spatne veci. Kup si za 600 mesicni permanentku na pluralsight.com a vyber si skoleni na React nebo na Angular a nemusis se uz tady na Rootu ptat, protoze ti to bude jasne.
« Poslední změna: 09. 05. 2019, 21:00:16 od PetrK »

Re:Ajax, Json, jQuery: použití value jako hodnota atributu
« Odpověď #10 kdy: 10. 05. 2019, 09:40:04 »
Na to, v čem ZAJDAN plave, mu žádný FW nepomůže.
Vždyť jde jen o to ve vhodném místě získat z řádku hodnotu a tu použít "o něco dřív".
Ale už ti poradil robin martinez.
Tu hodnotu získáš při průchodu jednotlivými poli na řádce a pak událost dodatečně pověsíš na už vytvořený element (ale to bys ty tabulku musel vytvářet jinak).
Nabo na prasáka, když už to generuješ jen do hloupého stringu, tak si tam vlož za neznámou hodnotu %hodnota%, a pak za vnitřní smyčkou, kdy budeš znát potřebnou hodnotu, udělej replace('%hodnota%', hodnota).

ZAJDAN

  • *****
  • 2 087
    • Zobrazit profil
    • E-mail
Re:Ajax ->Json->jQuery--->použití value jako hodnota atributu
« Odpověď #11 kdy: 10. 05. 2019, 09:41:23 »
Kód: [Vybrat]
const spanElement = $('<span>');
const value = 'tralala';
$(spanElement).mouseover(function event() {
  nhpup.popup(value);
});


děkuji...tohdle mi je jasné, ale já nedokážu ty hodnoty klíče iterovat na tu událost
hodlám to celé předělat v Rails, ale zatím experimentuju s původní verzí
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

ZAJDAN

  • *****
  • 2 087
    • Zobrazit profil
    • E-mail
Re:Ajax, Json, jQuery: použití value jako hodnota atributu
« Odpověď #12 kdy: 10. 05. 2019, 09:44:51 »
Vždyť jde jen o to ve vhodném místě získat z řádku hodnotu a tu použít "o něco dřív".
přesně jak píšeš :_)
já tu hodnotu již odchytil, ale do <td>, co se snažím je ji dostat do popupu nebo nějakého modalu
nemachruju, prostě v tomto plavu a uznávám to
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

ZAJDAN

  • *****
  • 2 087
    • Zobrazit profil
    • E-mail
Re:Ajax, Json, jQuery: použití value jako hodnota atributu
« Odpověď #13 kdy: 10. 05. 2019, 11:07:29 »
Vyřešil jsem to trochu na hulváta, ale dosáhl jsem toho co jsem chtěl
tím že se mi ty hodnoty naplnili do <td class="Items" style="display:none;">  kterej jsem schoval
jsem si je jen pak předal do popupu
Kód: [Vybrat]
$(".Letter").mouseover(function event() {
   var popup = $(this).siblings('.Items').html();
   nhpup.popup(popup);
 });
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

Re:Ajax, Json, jQuery: použití value jako hodnota atributu
« Odpověď #14 kdy: 10. 05. 2019, 11:33:35 »
Jestli ti jde jen o uložení proměnné k elementu, tak na to se v jQuery používá funkce data()