Hirdetés

2024. május 19., vasárnap

Gyorskeresés

Téma összefoglaló

Téma összefoglaló

  • Utoljára frissítve: 2014-02-25 10:20:57

LOGOUT.hu

JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)

Összefoglaló kinyitása ▼

Hozzászólások

(#7201) Atlantisz48


Atlantisz48
őstag

Sziasztok,

Egy kis segítséget/útmutatást szeretnék kérni Google script kapcsán.

Szeretnék létrehozni egy "Saját Google térképet"

Amibe egy Spreadsheet -ből koordináták alapján megjelölök kb 10 címet a térképen. Ezt képes kivitelezni a Google script? Keresgéltem az oldalukon a dokumentációban de egyelőre nem találtam olyan függvényt/parancsot, ami létrehozna egy ilyen fájlt a drive-on.

Előre is köszönöm. :R

(#7202) btz


btz
addikt

Javascriptel szeretnék bezárni egy szövegrészt vagy egy egész divet egy bezár gombbal és magát a bezár gombot is el akarom tünteni.

A dialogal már próbálkoztam és működik is, de azt írják, hogy nem valami standard cucc, ezért szeretnék valami mást. A másik problémám még vele, hogy bezáráskor a tartalom az oldal tetejére ugrik, ami nem biztos, hogy jó, ha a felhasználó egy hosszú lap alján van.

Jelenleg van egy ilyenem. Ez bezárja ugyan a szöveget de magát a bezár gombot nem. És ha a gombot alulra teszem, akkor még azt sem.

Érdekelne, hogy milyen lehetőségek vannak még erre.

ⓑⓣⓩ

(#7203) cattus válasza btz (#7202) üzenetére


cattus
őstag

Persze, hogy nem tünteti el a gombot, ugyanis nem nyúlsz hozzá a kódodban. A második esetben azért nem történik semmi, mert a var content = this.nextElementSibling; a gomb utáni, vele egy szinten lévő elemeket választja ki, és ha a gombot a paragrafus után rakod, akkor nem lesz ennek megfelelő DOM elemed. Szerintem itt a jó megoldás az lenne, ha a gombot és a szöveget összefoglaló elemet rejtenéd el. Erre egyszerű megoldás, ha az eventlistener callback-jébe ezt írod:

this.parentNode.style.display = 'none';

Do the thing!

(#7204) btz válasza cattus (#7203) üzenetére


btz
addikt

Őöö..... hova is kell beilleszteni pontosan?
A content = this.nextElementSibling helyére?

Updata:
Ah megvan.
Így már működik.
Köszi. 🙂

[ Szerkesztve ]

ⓑⓣⓩ

(#7205) cattus válasza btz (#7204) üzenetére


cattus
őstag

Annyit azért hozzáfűznék ehhez a kódódhoz, hogy bár működik, de még bőven van benne hibás működés. Pl. az alábbi sor:

var content = this.parentNode.style.display = 'none';

Itt bár a div-et eltűnteni, de a content értéke true (ami a this.parentNode.style.display = 'none'; kifejezés eredménye) lesz, nem pedig maga a tartalom. Ezért az utána lévő display állítás sem fog lefutni. Ha megnézed a console-t látod, hogy hibát dob. Javaslom nézz utána, hogy hogy működnek ezek az alap dolgok (értékadás, visszatérési értékek, callback és hasolnók.

Plusz a w3schools-os editor helyett szerintem inkább használj jsfiddle-t az ilyen kis kódokhoz, itt van külön HTML, CSS és JS rész, jóval átláthatóbb az egész, plusz van benne automatikus kódformázás is.

Do the thing!

(#7206) martonx válasza Atlantisz48 (#7201) üzenetére


martonx
veterán

A Google script az javascript. Ha így ráguglizol, remélhetőleg fogsz választ találni.

Én kérek elnézést!

(#7207) btz válasza cattus (#7205) üzenetére


btz
addikt

Dehát azt a részt pont te javasoltad, hogy tegyem bele vagy én értettem félre valamit és beletettem, utána elkezdett úgy működni ahogy nekem kell. :)

Közben találtam a dologra egy végtelenül egyszerű és purritán megoldást. Szóval feleslegesen bonyolítottam az egészet 😃
Remélem ez széles körben standard dolog és a legtöbb böngésző támogatja.

Ismerem a jsfidle-t és néha használom is, de ilyen purritán kódnál, az ágyúval verébre kategóriának érzem a használatát, főleg a külön szekcióba szedést (HTML, CSS, JS).

ⓑⓣⓩ

(#7208) btz


btz
addikt

Közben találtam egy ilyent is.

Némi átalakítással csináltam belőle egy tartalom felett megjelenő bezárhatzó popup-ot

Van belőle animated verzió is. Nagyon cool :)

[ Szerkesztve ]

ⓑⓣⓩ

(#7209) Jim-Y válasza btz (#7207) üzenetére


Jim-Y
veterán

Ugyanez amit csinaltal, csak szebben megoldva szeparalava a kodot. https://jsfiddle.net/3ky9chug/

(#7210) K1nG HuNp


K1nG HuNp
őstag

Milyen gyakorisággal szokás a backend apit összeegyeztetni a frontendel?

Frontenden react-reduxom van. Tegyük fel, hogy az user töröl egy elemet a listából. Ez ugye, hogy azonnal megtörténjen kitolok egy dispatchet, ami megváltoztatja a statet a frontenden és azonnal kitorlodik az elem. Ezzel párhuzamosan kimegy egy api post is, ami ugye a valódi adatbazisban modosit adatot.

A listat megjeleniteskor api alapjan jelenitem meg (componentdidmount -> dispatch -> api call -> visszaadja az adatot -> dispatch -> bennevan az adata a stateben). Utana viszont az elobb leirtak alapjan kulon kezelodik nemileg a frontend es a backend.

Ez code smell? Nem igy szokas, vagy ez is egy jarhato ut?

Olyan problemakat tudok elkepzelni pl, hogy ugye elmegy hasznalat kozben a net, erre kikuszoboleskent minden apihivas vegen ha az nem ter vissza 200as statussal akkor azonnal jelzek az usernek. Ez igy teljes koru megoldas?

(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()

(#7211) Jim-Y válasza K1nG HuNp (#7210) üzenetére


Jim-Y
veterán

Van 2 lehetoseged.

A szokasos: a frontenden kitorolsz egy element, elinditasz egy HTTP DELETE requestet a backendre, ha megjott a valasz frissited a view-t

Optimistic: FE-n kitorlod a listabol az elemet, befrissited a view-t, de cacheled a kitorolt elemet, kozben elinditod a DEL requestet es attol fuggoen, hogy a BE-n sikerult-e vagy sem utolag frissited a view-t. Ha a backenden minden sikerult es kitorolted az elemet akkor FE-n mar nem kell csinalni semmit max clearelni a cache-t. Ha viszont a backenden nem sikerult kitorolni, akkor vissza kell allitani a cahce-bol a state-et.

(#7212) cattus válasza Jim-Y (#7211) üzenetére


cattus
őstag

Kisebb alkalmazásoknál az első verzió szerintem jobb, könnyebb kódolni, egyszerűbb, és biztonsan konzisztens lesz a backend és a frontend.

Do the thing!

(#7213) K1nG HuNp


K1nG HuNp
őstag

Kis esti olvasmánynak pár elég jó feladvány. Igaz eléggé a syntaxra megy rá de én érdekesnek találtam.

(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()

(#7214) hcl


hcl
félisten
LOGOUT blog

Hello,

Talán tudtok segíteni : olyasmire lenne szükségem, hogy egy 3d címkefelhő címkéi közé vonalakat tudjak tenni, jelezve az egyes szavak kapcsolatait. Sajnos nem találtam erre megfelelő címkefelhő - JS cuccot, de hátha itt valaki tud ilyet.

Köszi előre is :)

Mutogatni való hater díszpinty

(#7215) K1nG HuNp


K1nG HuNp
őstag

Ha token alapu authentikaciot hasznalok akkor tenyleg nincs jobb megoldás a "kilépés" gomb megoldására a token blacklistelésnél?

Illetve ki kell még bővíteni a köv megoldást esetleg? Nem akarok atombiztos dolgot, csak ha valaki megnezi a projektet githubon akkor ne rohogje el magat..

Szoval: user regisztracional bcryptel jelszot "szaltedheshelek", loginnál comparelek, ha helyes akkor (JWT) tokent rakok cookieba, frontenden (react) pedig a megfelelo oldalaknal csekkolom a tokent es annak megfeleloen engedem be / redirectelem a felhasznalot.

(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()

(#7216) cattus válasza K1nG HuNp (#7215) üzenetére


cattus
őstag

Nem tudom milyen backend-et használsz, de miért akarod az egészet kézzel megcsinálni? Ez egy tipikusan olyan probléma, amit jópárszor megoldottak már az életben, és vannak rá standard módszereket használó package-ek, mind frontenden, mind backenden.

Do the thing!

(#7217) Jim-Y válasza K1nG HuNp (#7215) üzenetére


Jim-Y
veterán

En JWT-s authentikaciot meg nem csinaltam, igy a blacklisteleshez nem tudok hozzaszolni (bar engem is erdekelne), de cookie alapu autentikacional

* kell egy session middleware (express, koa, xyz .. mindnek van ilyen middleware-e). A session-t tarolhatod adatbazisban, memoriaban, vagy memcache-ben is (pl redis)
* sikeres loginnal ctx.session-re beallitod a user-t, meg azokat az informaciokat amiket fontosnak tartasz session-ben tartani
* frontendre lekuldhetsz publikus user infokat
* logoutnal session-t nullazod a backenden

API meg ugy mukodik, hogy a nem publikus endpointokra teszel session checket.

(#7218) mobal válasza K1nG HuNp (#7215) üzenetére


mobal
MODERÁTOR

JWT-t nem teszünk cookie-ba, headerben vagy url-ben küldjök. Sima login / logout-tal szokott történni, blacklisteled a tokent a backend oldalon.

mobal,

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#7219) btz


btz
addikt

Hogyan tudnám törölni egy div tartalmát karakterről larakterre a végéről indulva?

https://codepen.io/bzozoo/pen/xoXNXG
Így törli a div tartalmát, de csak egyszerre.

ⓑⓣⓩ

(#7220) hcl válasza hcl (#7214) üzenetére


hcl
félisten
LOGOUT blog

Erre valakinek esetleg ötlete?



Most éppen X3dom-al próbálgatom, de az kicsit overkill, és nem a legjobb eszköz.

[ Szerkesztve ]

Mutogatni való hater díszpinty

(#7221) mobal válasza btz (#7219) üzenetére


mobal
MODERÁTOR

Animációt akarsz kvázi?

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#7222) martonx válasza hcl (#7220) üzenetére


martonx
veterán

Hát, ha nincs más, akkor írnod kell egy sajátot.

Én kérek elnézést!

(#7223) btz válasza mobal (#7221) üzenetére


btz
addikt

Nem fontos az animáció. A lényeg az lenne, hogy törölhető legyen a div tartalma gombnyomásra, csak a gombnyomás nem az egész div contetntet törölné, hanem csak egy egy karaktert gombnyomásonként. Egyfajta backspaceként működne.

[ Szerkesztve ]

ⓑⓣⓩ

(#7224) petyus_ válasza btz (#7223) üzenetére


petyus_
senior tag

$(document).ready(function(){
$("button").click(function(){
const div = $('#myDiv');
div.text(div.text().substring(0,div.text().length-1))
});
});

(#7225) hcl válasza martonx (#7222) üzenetére


hcl
félisten
LOGOUT blog

Az volt a kérdés, hogy van-e más. :D

Mutogatni való hater díszpinty

(#7226) btz válasza petyus_ (#7224) üzenetére


btz
addikt

Köszönöm a megoldást. Így már működik, amit szeretnék.
Egyetlen gond van vele, hogy az első klikknél nem csinál semmit, csak a második kattintás után kezdi törölni a div tartalmát.

[ Szerkesztve ]

ⓑⓣⓩ

(#7227) btz


btz
addikt

Ez a verzió pedig egyszerűen nem működik és nem értem, hogy miért?

<div id="myDiv">
1234567890 ABCDEFG abcd efg
123
</div>
<p>This is a paragraph outside the div.</p>
<script>
function myFunction() {
var txt = $('#myDiv');
txt.val(txt.val().slice(0, -1));
}
</script>

<button onclick='myFunction()'>TÖRLÉS</button>

ⓑⓣⓩ

(#7228) sztanozs válasza hcl (#7225) üzenetére


sztanozs
veterán

[link]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#7229) Csepe válasza btz (#7227) üzenetére


Csepe
aktív tag

Szia!

A .val() az input elemek value értékét kéri le, ha egy div elem szövegét akarod módosítani, akkor a .text(), vagy a .html() metódusokat lehet használni.

Nihil Novi Sub Sole /::\ https://bit.ly/2R7gwB2

(#7230) petyus_ válasza btz (#7226) üzenetére


petyus_
senior tag

Valószínűleg van a végén whitespace, és azt vágja le először, hívja rajta egy trim()-et.

(viszont akkor a spacek alapból mindig törölve lesznek, nem tudom ez gond-e).

[ Szerkesztve ]

(#7231) hcl válasza sztanozs (#7228) üzenetére


hcl
félisten
LOGOUT blog

Köszi :) :R

Mutogatni való hater díszpinty

(#7232) btz válasza petyus_ (#7230) üzenetére


btz
addikt

Elvileg nem lesznek benne space-ek, így nem gond ennél a feladatnál, ha majd másik feledatnál kell alkalmaznom, akkor lehet hogy gondot okoz.

[ Szerkesztve ]

ⓑⓣⓩ

(#7233) btz válasza Csepe (#7229) üzenetére


btz
addikt

Kipróbálom ezeket is. Köszi.
substring-el, használtam már text()-et, benne is van a linkelt kódban de ki van kapcsolva //-el.

[ Szerkesztve ]

ⓑⓣⓩ

(#7234) btz


btz
addikt

Viszont most kaptam egy ilyen kódot egy másik fórumról

<div id="myDiv">
1234567890 ABCDEFG abcd efg
123
</div>
<div id="button">
<button onclick="myFunction()"><-DEL</button>
</div>
<script>
function myFunction() {
var txt = document.getElementById("myDiv").innerHTML.slice(0,-1);
document.getElementById("myDiv").innerHTML= txt;
//txt.slice(0,-1);
//var txt = $('#myDiv');
//txt.val(txt.val().slice(0, -1));
}
</script>

Ez is az első clickre nem történik semmi (legalább is látszólag) betegségben szenved.

ⓑⓣⓩ

(#7235) btz válasza btz (#7234) üzenetére


btz
addikt

Á, tudtam én hogy az ebédszünet meghozza a megoldást, ha nem gondolkodom rajta, egyből beugrik. Az enter az utolsó karakter és e lezáró div között. Azt törli ki elősször.
Így mostmár hibátlan 🙂

ⓑⓣⓩ

(#7236) Gave válasza btz (#7234) üzenetére


Gave
addikt

<div id="myDiv">
1234567890 ABCDEFG abcd efg
123
</div>

Ezért "nem működik" elsőre, valójában működik, ha teljesen egy sorba írod akkor nem lesz ott extra karakter amit törölhet.

//látom közben meglett :)

[ Szerkesztve ]

Here? For folks like us? Wrong city.., wrong people

(#7237) bandi0000


bandi0000
nagyúr

Angulárban csinált már valaki olyan dinamikus formot, ahol megkapjuk adatnak, hogy milyen fajta input mező legyen pl text, checbox stb és az alapján generálok hozzá egy formot? Mi lehet erre a best practice?

Xbox One: bandymnc

(#7238) cattus válasza bandi0000 (#7237) üzenetére


cattus
őstag

Ez esetleg?

Do the thing!

(#7239) K1nG HuNp válasza mobal (#7218) üzenetére


K1nG HuNp
őstag

user oldalon el kell tárolni valahol a cookiet nem? :F és ugye vagy localstorage vagy cookie, kettő közül pedig ha jól tévedek a cookie biztonságosabb és némileg egyszerűbb is. (localstoraget xss attack miatt vélem, meg mások is egy gyors google miatt kevésbé biztonságosnak)

(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()

(#7240) I02S3F


I02S3F
őstag

Sziasztok! Javascriptben van dialógus ablak és üzenetablak. Miért nem találkozok velük böngészés közben? Idegesítőek? Elavultak?

(#7241) cattus válasza I02S3F (#7240) üzenetére


cattus
őstag

Ha ezekre gondolsz, akkor igen, elavultak, nem nagyon szabhatóak testre, és pl. az alert az blokkol minden mást, amíg be nem zárod.

Do the thing!

(#7242) I02S3F válasza cattus (#7241) üzenetére


I02S3F
őstag

Köszönöm! Tankönyv olvasás közben merült fel a kérdés. :R

(#7243) K1nG HuNp válasza K1nG HuNp (#7239) üzenetére


K1nG HuNp
őstag

első mondatban cookie helyett tokent akartam írni.

mindegy, közben esti kikapcsnak megcsináltam Vue-ban is egy jwt autentikációt. meglepően sima volt, reacthoz képest legalábbis... vannak ilyen apróságok, hogy routes.beforeEach() amivel aki csinált már más frameworkben authot szerintem el tudja képzelni mennyivel egyszerűbb a téma :DD

Még amikor kiderült, hogy cégnél Vue van a stackban eléggé el voltam kenve, mert nem akartam egy enniyre opinionated frameworkot begyakorlolni, meg a react mégiscsak jobban ment, de mostmár kezdem érteni miért szeretik ennyire az emberek. Kezdőknek nagyon sokat segít, hogy minden "gyárilag" benne van, de látva a személyes példám és azt hogy egyre nagyobb oldalak váltanak vue-ra (gitlab, 9gag), lehet annyira nem is vészes dolog az, ha egy framework nincs teljesen lecsupaszítva a minimumra. :K

(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()

(#7244) martonx válasza K1nG HuNp (#7243) üzenetére


martonx
veterán

:D nem véletlenül ajánlom mindig a vue-t, én is dolgozok react-tal is (régen pedig volt szerencsétlenségem angularral is szopni), és már várom, hogy mikor fog ugyanúgy lecsengeni a react hype, mint anno az angular hype. Bár tagadhatalan, hogy az angularhoz képest a react is egy megváltás.

Én kérek elnézést!

(#7245) mobal válasza martonx (#7244) üzenetére


mobal
MODERÁTOR

Az angularral amúgy nincsen semmi baj :U

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#7246) Jim-Y válasza mobal (#7245) üzenetére


Jim-Y
veterán

Szerintem sincs semmi baj, az is csak egy eszköz mint a többi.

(#7247) martonx válasza mobal (#7245) üzenetére


martonx
veterán

Jogos, inkább a hype-okkal van a baj, amik aztán olyan irányba visznek el feljesztéseket, amilyenbe nem kellene. Nehéz egy döntés ellen fellépni, amikor a csapból is az folyik, hogy most éppen XY az aktuális szuperüberbrutálmegváltó tool. Régebben ilyen volt az angular, most ilyen a react. Már előre izgulok, mi lesz a következő.

[ Szerkesztve ]

Én kérek elnézést!

(#7248) Zedz válasza martonx (#7244) üzenetére


Zedz
addikt

"Bár tagadhatalan, hogy az angularhoz képest a react is egy megváltás."

Es ezt szakmailag is tudod indokolni?

(#7249) K1nG HuNp


K1nG HuNp
őstag

Ez a hype dolog szerintem szimplán annyi, hogy valamiért szeretünk (én legalábbis biztos) mindig a legmenőbb, legújabb, ha a fészbuk is ezt használja akkor biztos jó módon olyan ezközökhöz nyúlni amire egyáltalán semmi szükségünk.

Az angular komplexitása szerintem egy kifejezetten erős dolog ha 300 senior fejlesztőd van, mert ők fogják tudni igazán értékelni azokat a megoldásokat amelyeket a többi frameworkhöz képest nyújt.

React már egy fokkal emészthetőbb az átlag JS fejlesztőnek, legalább érted mit írsz amint megtanulod a framework sajátságait meg a jsx-et.

Szerintem csak jól kell ezközt választani az adott feladathoz és nem fogja felütni a fejét ez a probléma, persze ha nem te döntöd el miben írod akkor....

(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()

(#7250) martonx válasza Zedz (#7248) üzenetére


martonx
veterán

Alapvetően kis projekteken dolgozunk (maximum 3 frontend fejlesztő párhuzamosan), ezekhez angulart használni szimpla önszopatás. Elhiszem, hogy van az a projekt méret, amin párhuzamosan több száz frontendes dolgozik, abban az esetben simán jó lehet, hogy kismillió felé szét van darabolva, emiatt komplexebbé téve minden.

Szakmai indoklásom ennél pontosabb nincs, mint hogy hiszem, hogy a projektek 95%-a nem esik bele a fenti nagy projekt kategóriába.

Én kérek elnézést!

Copyright © 2000-2024 PROHARDVER Informatikai Kft.