- sziku69: Fűzzük össze a szavakat :)
- gban: Ingyen kellene, de tegnapra
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- bitpork: MOD Júni 13 Augusztus 2- szombat jelen állás szerint.
- Ndruu: Segíts kereshetővé tenni a PH-s arcképeket!
- Luck Dragon: Asszociációs játék. :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Szoszo94: Xiaomi Mi Router 3G - Padavanra fel!
- Gurulunk, WAZE?!
- Geri Bátyó: B550 szűk keresztmetszet, de mi és miért?
-
LOGOUT
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
martonx
veterán
válasz
instantwater #7996 üzenetére
Én ezt mind megértem (első kézből tapasztaltam is), de elfogadni sose fogom. Ezért is hagytam ott a pénzügyi szektort, és nyergeltem át a startup szektorra. Majd 60 éves koromban ráérek visszamenni valami szakmai elfekvőbe, ahol nyugdíjba menetelemig ímmel-ámmal eltaszigálom a régi szarokat, mindenbe magasról szarva.
-
válasz
petyus_ #7997 üzenetére
Ezt általában a pénzügyekért felelős vezetők döntik el, nem a fejlesztők.
Ők rövid távon profitnövekedést akarnak elkönyvelni.
Nem számít, hogy a fejlesztés ezáltal lelassul, felvesznek még ember.
Aztán amikor néhány év múlva abszolút tarthatatlan a helyzet, akkor felvesznek egy egész új csapat fejlesztőt, hogy oltsa a tüzet, és tegyen meg bármit az ellen, hogy összeomoljon az egész.Ilyenkor van a kolléga által említett 25 év lemaradás lefaragása 15 re.
Ugyanakkor azt sem szabad elfelejteni, hogy ilyen nagy cégek inkább választják a többéves, de kiforrott, stabil, megfelelően supportált technológiát a néhány éves legújabb trenddel szemben.
-
petyus_
senior tag
válasz
instantwater #7996 üzenetére
Még ebben az esetben is jobb lenne, ha húznának egy réteget a legacy rendszerre, és legalább afölött lehetne modern technológiákkal dolgozni. Mert így a valamikor esedékes újraírás még drágább lesz.
-
válasz
martonx #7995 üzenetére
Ezek a nagy cégek sokszor azért vannak lemaradásban, mert a webes rendszereiket integrálniuk kell egy őskövület háttér rendszerrel, és kompromisszumokat kell kötni a modernitás vs elérhető kliens libraryk között.
Nem írharja GraphQLben, Typescript backenddel a webes rendszert mert a háttérben lehet, hogy valami olyan nonstandard apihoz kellene csatlakoznia amihez csak a 15 éve elavult .net library képes csak megfelelően.
A háttérrendszert újraírni pedig nem érdemes, mert tökéletesen működik, és sok millió lenne újraírni.
Az pedig, hogy mit állítanak, hogy mire büszkék az csak marketing ami nagyon távol áll az ITtól.
-
martonx
veterán
Pedig hidd el, valahogy azt a rengeteg webáruházas vásárlást el kell tudniuk juttatni az áruházaknak a megrendelőkhöz, és napi több százas megrendelés számoknál már senki nem adminisztrátorokkal viteti fel a csomagokat a futár cégek rendszereibe. A GLS-t épp csak azért hoztam fel példának, mert rohadtuk büszkék az annyira új, hogy még csak teszt fázisban lévő, szerintük, hiper-szuper modern API-jukra
ó, most ezt így megint leírtam, megint össze kell kaparnom magam, hogy folytatni tudjam. Vitázhatunk mi itt GraphQL-ről, hogy csak pici előrelépés és az is csak marginális esetekben, vagy evolúciós lépés, és nélküle már API-t írni sem érdemes, miközben a világ 99%-ban a GLS-hez hasonló cégekből áll, akik simán 15-25 év lemaradásban vannak minden téren. GLS most épp az új rendszerével a 25 éves lemaradását dolgozza le csak 15 éves lemaradásra.
Egészen elképesztő, amit európa legnagyobb csomagküldő szolgálata, API, meg úgy általában IT részen művel.
A csomagpontos térkép integrációjuk is megér egy misét, ES5-ös jquerystől, meg global namespace-estől... Komolyan ennél még az is jobb lenne, ha iframe-et adnának, és leírnák, hogy mi az az egy postmessage event, amire fel kell íratkozni a csomagpont kiválasztásához.
Én konkrétan úgy integráltam a csomagpontjukat, hogy néhol bizony bele kellett nyúlnom a forráskódjukba, és mi magunk hostoljuk a kódot, pedig ez így nem túl szabályos, ahogy arról se értesülünk, ha közben kiadnának új verziót (mondjuk tekintve, hogy ránézésre 10 éve nem nyúltak a js-ükhöz, ettől félek a legkevésbé). -
-
Jim-Y
veterán
válasz
martonx #7992 üzenetére
Na mondom rakeresek a gls api-ra, nem tudtam, hogy egyaltalan van igeny ilyen public api-ra, oldalukon -> Fejlesztoi dokumentacio -> Letoltes, filetype: pdf
melyik evben elnek ezek ahol az api dokumentaciot le kell tolteni!! Meg ha egy swagger.yaml-t kene letolteni azt mondom, hogy az oke..na mindegy. Mondanom sem kell ennel a pontnal annyira nem erdekelt, hogy le is toltsem
-
martonx
veterán
válasz
instantwater #7991 üzenetére
Félreértettél, nem a kliens implementációról beszélek (azt majd intézi mindenki magának), hanem a szerver implementációról. Én azon röhögök / sírok, hogy .Net fejlesztőként simán látom, meg tudom ítélni, hogy milyen .Net verziót használnak (elég megnézni az Endpoint url szintaktikájukat például, vagy látni, hogy olyan json serializációs hibák vannak a rendszerükben, amik még az ősi .Net Framework 4.5-nél voltak). Pont ugyanezen elvek mentén pedig csukott szemmel is ráismerek a 90-es évekbeli vb scriptes classic ASP-s SOAP endpointokra.
Nyilván bárki bármilyen nyelven kapcsolódhat hozzájuk, nem erről van szó, se nem érdekel a kiadott példa kódok, példa kliensek nyelve.
Arról van szó, hogy egy vadiúj fejlesztésnek hogy lehet .Net 4.5-tel és WCF-el nekiállni manapság, és ráadásul az elkészült produktumot hogy lehet legkorszerűbb eszközöknek hazudni. -
-
martonx
veterán
válasz
instantwater #7988 üzenetére
"Lehet, hogy az alkalmazásodnak az adott lekérdezésből mindössze 2-3 mező kell, de az adattípus 10-20 mezőt tartalmaz, esetenként még néhány mező tartalmaz további elemeket (tömb/objektum).
Ez egy nagy eredménylistánál sok adatot jelent, amivel nem terheled a lassú 3/4G hálózatot.
Valamint a GraphQL támogatja több lekérdezés összefűzését, így egy roundtrip latencyvel megúszod ami hagyományos REST APInál 2-3-4 lekérdezés lenne 2-3-4x roundtrip latencyvel, és a felhasználónak minden századmásodperc számít."Ez így elméletben tök jól hangzik, gyakorlatilag, amikor saját SPA alá REST API-kat írunk, eddig se küldtünk ki minden szemetet, csakis azt, ami kellett. Más kérdés, hogy 3rd party API-knál ennek lenne létjogosultsága, viszont 99%-ban pont ők azok, akiktől FTP-n csv-ben tudod leszedni az adatot...
A több lekérdezés összefűzése elméletben faszán hangzik, gyakorlatban meg plusz js komponenseket kell használni, hogy az ember megspóroljon pár (lehet, hogy épp semennyi) roundtrip latency-t.. Miközben a plusz js letöltésének, feldolgozásának is van ideje.
No mindegy, mondom a koncepciót értem, azt az őrült nagy hozadékát nem érzem, mint anno amikor egy full fos, senki senkivel nem kompatibilis SOAP-ot, vagy FTP-s csv API-kat, leváltotta a Rest API.
Sajnos viszont a gyakorlat nálam is azt mutatja, hogy például a GLS most szuper büszke az újonnan elkészült új API-jára idézem: legkorszerűbb eszközök alkalmazásával jobb felhasználói élményt biztosítunk.
Na ez az új interfészük ősi .Net Framework 4.5.2-vel készült, WCF technológiával, ami olyan 2005 táján volt menő. Jó, mondjuk ahhoz képest, hogy az előző (mármint a jelenleg használt) API-juk meg VB scriptes classic ASP-s volt, ahhoz képest végülis ugrottak az időben 10 évet előre. -
estro
csendes tag
válasz
instantwater #7988 üzenetére
A rest api-t úgy kellene tervezni, hogy ne legyen felesleges property a jsonben. Ezért írnak DTO-kat backend oldalon, hogy azt kapja a frontend amire szüksége van.
Bár ez sok esetben sajnos nem így történik és iszonyú mappalésekbe kezd a js, hogy használható legyen az adat.Nem használatam még GraphQL-t, de úgy tudom az-az előnye, hogy nem kell a folyton változó üzleti igényekhez igazítani a backendet is ha valami plusz property kell a UI-ra, hanem elég csak js kódot módosítani. Normál esetben ilyenkor a backend-et kell megkérni hogy ezt meg azt is rakja bele a responseba, de ez kihagyható GraphQL-el. Sokkal függetlenebb a frontend. Viszont ennek sok hátránya van backend oldalon (sql lekérdezések optimalizálása, authorization, stb.)
-
válasz
martonx #7987 üzenetére
A redux valóban egy fura találmány, de mindenki siet Hookokra átállni, most az a menő.
Én sem értem, hogy tudott elterjedni a redux.A GraphQLnek annyi előnye van a REST APIval szemben, hogy rugalmasan kezeli az átvitt adatmezőket, tehát a kliens adja meg, mely mezőkre van szüksége az eredményhalmazból, míg hagyományos RESTnél mindent le kell töltened.
Lehet, hogy az alkalmazásodnak az adott lekérdezésből mindössze 2-3 mező kell, de az adattípus 10-20 mezőt tartalmaz, esetenként még néhány mező tartalmaz további elemeket (tömb/objektum).
Ez egy nagy eredménylistánál sok adatot jelent, amivel nem terheled a lassú 3/4G hálózatot.
Valamint a GraphQL támogatja több lekérdezés összefűzését, így egy roundtrip latencyvel megúszod ami hagyományos REST APInál 2-3-4 lekérdezés lenne 2-3-4x roundtrip latencyvel, és a felhasználónak minden századmásodperc számít.
Egy nagyon meggyőző GraphQL use case a PostGraphile ami Postgres tárolt eljárásokat tud elérhetővé tenni GraphQL APIn keresztül, így automatikusan generálva az APIt, ezzel minimálisra csökkentve a boilerplate kódot.
A végére pedig a sokkkkkkhatás. Még ma is használnak FTPn keresztül CSVt, mert a rendszer amiből az adat jön az egy ősszörnyeteg, és így exportál bizonyos adatokat periodikusan.
-
martonx
veterán
Nincs sok (sőt igaziból minimális) tapasztalatom a GraphQL-el. Felhasználóként egyszer kellett integrálódnom GraphQL API-hoz. Hangsúlyozom felhasználóként semmi előnyét nem éreztem, sőt macera volt plusz libeket behúzni a GraphQL miatt, miközben pont ugyanúgy adatot kellett belőle kinyerni, mint bármilyen REST API-ból.
Ugyanakkor értem a koncepcióját, egy a GraphQL API-val szorosan integrálódó frontendnél lehetnek előnyei, így viszont ahogy nekünk kiajánlották, és sima GET-tel leszippantottuk az adatot, teljesen felesleges bonyolításnak tűnik.
Hogy fejlesztői oldalról nézve milyen előnyei lehetnek a GraphQL-nek, arról abszolút nem tudok nyilatkozni.
Mindenesetre a fenti tapasztalat alapján nem éreztem azt, hogy hú rohanok a REST API-jaimat lecserélni GraphQL-remint pl. a 2000-es évek elején, amikor a borzalmas gané SOAP-ot (meg FTP-s csv-ktől kezdve már nem is emlékszem mi minden szart) végre le lehetett váltani rendes Json Rest API-kkal.
-
crocy
tag
Hi,
react-ban jaratos emberek velemenyere lennek kivancsi.
2020-ban van meg ertelme tanulni redux-ot vagy teljesen felejtös a hook-ok mellett? -
togvau
senior tag
Azt hogy kell felrakni? Meg mit?
Ezt el tudja magyarázni nekem, hogy a get miért undefineddel tér vissza? AngularsJS 1
function geturl(url, http) { http.get(url).then( function (response) { console.log('megy'); return response.data; }, function (response) { console.error('error van'); return 'someting bad happened'; });}
Ezelőtt, nem külön functionban, hanem a controlleren belül, múködött, csak a $http-vel vel
Ha rossz az url, ahogy kell error-t dob, szóval a return az működik. -
-
togvau
senior tag
sajnos angularjs (angular 1) tákolásra vagyok ítélve. Hogy lehet elérni az VSC-ben, hogy ne csak mint sima szövegszerkesztőként működjön, egy angularos html-ben?
-
alratar
addikt
Sziasztok,
Van valakinek ötlete, hogy az alábbi kódsor, miért csak adiv
elemet teszi atr
-hez?tr.appendChild(document.createElement("td").appendChild(div));
Mintha
td
létrehozását simán átugraná. -
alratar
addikt
Sziasztok,
Remélem jó helyen rakom fel a kérdésem, de nem találtam json topicot.Szóval, felpakoltam magamnak, mnp-vel a json-servert, mert azt hallottam, hogy az jó.
De amikor ráálítom egy file figyelésére. hibát dob.
json-server : File C:\Users\***\AppData\Roaming\npm\json-server.ps1 cannot be loaded because running scripts is disabled on this system.Utána néztem és elvileg a PowerShell-ben a Set-ExecutionPolicy Unrestricted paranccsal megoldható.
Viszont, ha itt átállítom a policyket, nem fogok galibát okozni az OS működésében? -
cattus
addikt
Sziasztok!
A következő a helyzet: van nekem egy TypeScript-ben írt full-stack express alkalmazásom pug template-tel + a public mappában kliensoldali JS-sel. Azt szeretném elérni, hogy a kliensoldali JS kódot (+ha lehet akkor a SCSS-t is) webpack-kel vagy hasonlóval bundle-ölni úgy, hogy a pug templating megmaradjon. A szerveroldali kódot nem muszáj, azt jelenleg tsc-vel fordítom és nekem ez elég is.
Főleg azért szeretném, mert jelenleg a kliensoldali függőségeket most CDN-ről húzom be, ezeket szeretném NPM-ről kezelni, mint a többit + az ESNext feature-ök is jól jönnének.
-
togvau
senior tag
Az előző megoldódott, nem értem miért, azt sem, hogy hogy.
De itt egy másik x akta:
linkList.forEach(element => {
const user = this.users.find(m => m.foundUsr = element.userId);
if (typeof user.links === 'undefined') {
user.links = [element.link];
console.log(user.foundUsr+'init: '+element.link);
}
else {
user.links.push(element.link);
console.log(user.foundUsr+'push:'+element.link);
}
});
Konzolra gyönyörűen kiírja a párosításokat, stimmel mit, hova kell raknia.
Ellenben ha utána kiiratom a user listában a dolgokat, látom, hogy az összes element.linket az első találathoz adta. Tehát a kiiratás jó, de a végeredmény nem. -
martonx
veterán
Nem kétlem, hogy valamicske időt belefektettél a kódok innen-onnan összegubrincsolásába. Viszont szerintem te is látod, hogy ez nem egy olyan egyszerű dolog, mint megtanulni fát vágni. A kérdésekkel semmi baj nincs, amint azok egy fórum keretein belül pár mondattal, pár sornyi példa kóddal megválaszolhatóak.
Esetedben viszont nem ez a helyzet. X órát elszórakoztál netről innen onnan leszedett cuccokkal, és most ezeket mutogatva várod, hogy valaki csinálja meg (mert azok a kódok simán kukázhatóak, nem 1-2 sorral van bennük baj, hanem koncepcionálisan), magyarázza el, tanítson meg téged. Ez így nem fog menni.Mindenesetre ha utána nézel a Fetch API-nak, async, await-nek, Promise-nak, akkor meg fogod tudni oldani amit szeretnél.
-
togvau
senior tag
chrome-os konzolra kiíratásnál ilyenek vannak:
{userId: 2, interactionId: 130, userProps: {…}, time: "2020-06-30T10:48:42.403+0000"}
interactionId: 130
userId: undefined
time: "2020-06-30T10:48:42.403+0000"
userProps: {id: 1, name: "C`...
Igen, tutira megegyeznek, mint írtam copy paste volt a java class-ból a ts interface-re. Ha nem egyezik meg az interface ben, akkor jó. Ha megegyezik akkor undefined... ilyet még életembe nem láttam, semmilyen nyelvnél, pedig próbáltam párat
Azért írtam az, hogy más néven küldi, a backend, mert megpróbáltam azt is, hogy más néven küldje.
De a lényeg: ha az interface-ben van az a property deklarálva, ami a beérkező jsonban az első elem, akkor undefined lesz, lásd a fenti konzol üzenetet amiben kiiratom az összes példányt. Viszont hozzá lehet férni, pl egy map()-el. Ha nincs, akkor lesz értéke a konzolüzenetben, viszont a map() undefined-et hoz.
-
cattus
addikt
Egyszer azt írod, hogy mindig jön userId a backendről, máskor meg azt, hogy akkor is ott van a frontenden, ha amúgy a backend el se küldi?
Ellenőrizted a kis-nagybetűket, hogy ugyanaz a JSON-ben, mint az interface-ben? a JS/TS érzékeny ezekre.
Az adatnak akkor is ott kell lennie, ha a TS interface nem egyezik meg vele pontosan. Szóval vagy nem küldi el az adatot a backend, vagy valami más turpisság történik. -
togvau
senior tag
Hello, typescripttel ismerkedek, és a javascript problémákba futok.
Tehát van egy backend ami válaszol jsonban üzeneteket. A válasz osztály másolata typescript interfaceként is megvan, copy paste nevekkel, tehát tutira egyeznek.
Angularos vagy milyen httpclient get-nél fogadja frontend, és 1 kivételével az összes érték bekerül, ahogy kéne.
Az az 1 kivétel fogalmam sincs miért nem kerül be, de ha átnevezem a typescript interface-ben a nevét másra, aminek köze nincs a backendből jövő névhez, akkor az is átmásolódik rendben, viszont a megváltatott nevű property az undefined... tehát ha rossz, akkor jó.. félig. Ez WTF?this.http.get<Userdata[]>(environment.madchinfo, { params: paramz });
nincs userId, minden más van: (backendtől mindig jön userId)export interface Userdata{ userId: number; interactionId: number; userProps: UserProps; time: Date; photosid: number[];}
Van userId, és olvasható, de fck az undefined, és a vicc, hogy akkor is van kitöltött userId, ha a backend nem is küld ilyet...
export interface Userdata{ fck: number; interactionId: number; userProps: UserProps; time: Date; photosid: number[];}
-
btz
addikt
Illetve azt sem vártam el senkitől sem itt, sem máshol, hogy hűde sürgösen helyettem rakjon össze egész weboldalakat, így ezt az atomerőműves példát sem tudom behelyettesíteni az én esetemre.
Nekem bőven az is elég ha támpontot ad valaki egy egy problémára, (ahogy például te is tetted a fenti DOM Content Loadedes példával, ami sajnos nem hozott eredményt ugyan, illetve már a kérdés feltevése előtt is próbálkoztam vele, mégis hasznos megközelítése a segítségnyújtásnak). Nem várom el senkitől hogy helyettem dolgozzon,helyettem írja meg a kódot. Szóval úgy gondolom rosszul látod a dolgot. -
btz
addikt
válasz
martonx #7956 üzenetére
Nem értem teljesen a mondandód lényegét. Jól működő kódokkal minek jönnék a fórumra? Egy fórumra általában nem működő, nem jól működő kóddal, vagy valamilyen problémával szoktak jönni az emberek. Olyan példával jöttem ide, ami szemlélteti a problémám jellegét, így könnyebben meg tudom rá kapni a választ. Ez meg is történt. Siker. Keresgéltem is a probléma miatt nem keveset, többek között az általad javasolt [DOMContentLoaded] - el is próbálkoztam sikertelenül. Szóval nem látod jól, hogy 0 időt fektetek bele. Nem sok időm van rá ez tény, de szánok a dologra időt azért.
Nem érzem úgy hogy itt akarom megtanulni a programozás alapjait, de én úgy látom, hogy rengeteget tanulok egy egy probléma megoldásából. Ha lesz rá keret és idő, akkor majd elvégzek valamilyen tanfolyamot, mert amúgy érdekel a dolog, mégha néha úgy is jön le, hogy csak kényszerűségből foglalkozom ezzel.
Azzal pedig nem értek egyet, hogy én itt bárkivel atomerőművet szeretnék építetni. Ha így lenne akkor nem példakódot készítettem volna a problémámról, hanem kiírtam volna, hogy "légyszives rakjátok már össze az egész oldalamat A-Z-ig Kösz" Nem emlékszem, hogy ilyennel jöttem volna itt bármikor is.
Ha mindenki értene mindenhez, akkor nem lenne szükség a fórunokra, mert mindenkinek meg lenne oldva a problémája. Maximum arról lehetne diskurálni, hogy a mai nap is milyen könnyen ment, nem volt probléma egy szál se. -
martonx
veterán
Nyilván, csak amit látok, hogy még az időt se fekteted bele. Majd amikor jól felkészült összeszedett, működő jsfiddle, codepen, bánomisén milyen példákkal jössz, akkor lesz értelme az akár hülyének is tűnő kérdésekkel foglalkozni. Gyanítom mire megcsinálnál egy ilyen működő példát, közben utána olvasnál kényszerűségből ennek annak, hirtelen tárgytalan lenne a kérdésed is. Mert ez így csak időpocsékolás, hogy hirtelen kell neked valami, de olyan hirtelen, hogy értelmesen még kérdezni sincs időd. Ráadásul olyan ez mintha egy atomfizika topikban elkezdenéd kérdezgetni, hogy na és akkor hallottam, azokról az atomokról, erőművet szeretnék építeni, írjátok már le pár sorban gyorsan, hogy mit és hogy, 5 percem van rá, lehetőleg ne kelljen semmin módosítanom, csak átemelem a leírást, és máris termelje az áramot.
Az meg, hogy ki mit csinál főállásában, és kinek mire van ideje, abszolút nem tartozik ide. Ha nincs időd ezzel foglalkozni, akkor ne foglalkozz
-
btz
addikt
válasz
martonx #7954 üzenetére
Szerintem pedig belefér a fórum keretei közé egy egy probléma JavaScriptel való megoldása. A programozás is azért van, hogy problémát oldjon meg, nem önmagában azért, hogy az unalmas perceinket ezzel töltsük ki.
Én úgy érzem, hogy hogy lehet így is megtanulni a dolgot, problémák megoldása közben. Hidd el, hogy az elmúlt pár hónapban mióta komolyabban foglalkozom programozással, nagyon sokminden megértettem megtanultam, nem csak a kosz ragadt rám.
A fenti példából is sokat tanultam és utána is olvastam pár dolognak. Nem ezzel foglalkozom napi 8 órában, nem ez a fő profilom, így idő hiányában lassabban haladok, mint ha egy tanfolyamon napi 8 órában, vagy a teljes munkaidőmben ezzel tudnék foglalkozni
Sajnos a jelenlegi gazdasági helyzetben nem fér bele százezrek kiadása tanfolyamokra, szakértőkre. Abból kell gazdálkodni ami van. -
martonx
veterán
Szerintem egy fórumnak nem feladata (nem is lehet ilyen formában) nulláról megtanítani valakit programozni, aki ráadásul szemlátomást megoldást akar, nem tanulni. Hiszem, hogy a kérdéseid helyett, ha elvégeznél egy udemy javascript kurzust, vagy vennél egy minimális fáradtságot, és végigcsinálnál pár netes tutorialt, máris magadtól meglelnéd a válaszokat.
Vagy ha ennyire nem akarsz foglalkozni a témával, akkor fizessetek valakinek aki megcsinálja nektek amit szeretnétek.
-
btz
addikt
Amúgy ha akarok több .html fájlt is beszúrni akkor mindegyik elé kell egy callback konstans?
<script>
const callback = () => {
....
};
includeHTML("content.html", "content", callback);
const callback2 = () => {
....
};
includeHTML("content2.html", "content2", callback2);
</script> -
btz
addikt
Igazából nem az én kódomhoz lesz ez és nem is ez az eredeti éles kód. Amit ide kiraktam kódot az csak tesztelés céljából van. Akiknek kell a megoldás, azok szakvámban a w3school.com scriptjét használják, ezért úgy voltam vele, hogy ahol csak lehet, "nem bántom az alapkódot" elvet követem. Közben jött pár megoldás, amivel megkaptam amire vágytam, nem kellett pluszban átírni a w3scool scriptet, mindenki happy volt, amíg fel nem merült az igény, hogy az oldal betöltésekor is ez az amaz jelenjen meg az includeolt oldalrészen is, eközben ez a megoldás ki is ment a fejemből, de most forkoltam a kódod, így biztos helyen van
Sajnos nem lesz megúszva a w3 kód átalakítás
Köszi a segítséget -
disy68
aktív tag
Továbbra is az a gond, hogy nem a korábban ajánlott irányba mész. Az include html-es függvényednek adjad át callback-ként, amit akarsz csinálni miután betöltött az ajax kérés. Ez teljesen mindegy, hogy egy eseménykezelő megadása vagy valami extra html hozzáadása valamihez. codesandbox
-
tzimash
őstag
Sziasztok.
Adobe livecycle scriptet kellene csinálnom, ami megállapítja, hogy egy címke melyik műszakban készült és nem vagyok egy programozózseni
Van egy változóm, ami 00-23 értéket ad vissza, vagyis két karakteren az órát.
Ebből kellene egy if-fel eldöntenem, hogy ha 06-13-ig kapok vissza értéket akkor shiftcode legyen 1, ha 14-22-ig, akkor shiftcode legyen 2, ha 22-nél több és 06-nál kevesebb az érték akkor pedig shiftcode legyen 3.Még össze is tudnám hegeszteni talán, de valahogyan ezeket a 00, 01, ... 09, értékeket egyszámjegyűre kellene hozni előbb. Gondolom én.
Valakinek ötlet erre? -
martonx
veterán
Ez kell neked: https://developer.mozilla.org/en-US/docs/Web/API/Window/DOMContentLoaded_event
A SetTimeOut-os megoldás bénácska, és megbízhatatlan. Nem erre való.
-
btz
addikt
[HTML beágyazott kód QuerySelector működés]
Közben felmerült a kérdés, hogy ha a content.html output2 elemébe nem klikk eseménykor, hanem betöltéskor, akarok berakni valamit, akkor azt hogyan tehetem meg. Sajnos csak ilyen csúnya megoldás jutott eszembe:
setTimeout(function() {
var output2var = document.getElementById("output2");
output2var.innerHTML = "OUTPUT2 IS WORKING";
}, 1000);Azaz setTimeoutal megvárom a teljes betöltést. Elég gány.
-
Silεncε
őstag
válasz
#20238798 #7938 üzenetére
Ha jól gondolom, duplakattal próbálod indítani, az úgy nem lesz jó.Jah látom, írtad isNodeJS letölt (npm-et is!!) innen: [link] LTS-t ajánlom. Ha ez megvan, töltsd le az index.js-t és a package.json-t is, ezeket tedd be egy mappába. Utána lépj be a mappába, CMD-ben add ki a kövi parancsot:
npm i
(a package.json többek között az írja le, milyen dependency-k vannak, ezeket az npm fogja letölteni aznpm i
paranccsal). Ha ez megvan,node .
vagynode index.js
. Természetesen az infókat töltsd ki. Ha minden jól megy, működni fog -
dqdb
nagyúr
Ha az
[A, B]
intervallumot szeretnéd véletlen sorrendben felsorolni (mert amit leírtál, az nem véletlenszám-generálás, hanem véletlensorrend-generálás), akkor készíts egy tömböt[A, A+1, A+2, …, B-1, B]
elemekkel, egyA
-tólB
-ig vagyA
-tól(A+B+1)/2
-ig menő ciklussal cserélj ki két elemet, ahol a két sorrendet véletlenszám-generátorral határozod meg. A generálás pedig mehet a tömbbőlshift()
metódussal, amíg van benne valami.Másik lehetőség, hogy gyűjtöd egy listába az eddig kisorsolt számokat. Ha a lista hossza megegyezik a
B-A+1
értékkel, akkor nem tudsz visszaadni semmit sem, mert elfogytak a lehetőségek. Ha rövidebb a lista, akkor addig generálsz véletlen számot, amíg az nem lesz benne a listában. A visszaadott számot hozzáfűzöd a listához. A módszer hátránya a másikkal szemben, hogy induláskor igaz, hogyO(1)
időt igényelO(n)
helyett, de a generálás már legjobb esetben isO(n×log n)
leszO(1)
helyett. -
btz
addikt
Üdv!
Random számokat szeretnék kiíratni X darabot, de azt szeretném, hogy az X darabon belül ne legyen kétszer ugyan az a szám kiírva. Mondjuk ha az 5 egyszer már volt, akkor az ne legyen mégegyszer abban a körben. Ha mondjuk a random csak 0-9 ig terjedő számok közül választhat, de X 15-el egyenlő, azaz 15 darab kellene, akkor is csak 10 szám legyen random sorban (a nullával együtt ugye), azaz a fontosabb prioritás az legyen, hogy ne ismétlődjön egy körben a random szám, mintsem az X értéke. -
alratar
addikt
Sziasztok,
Ha jól tudom afor ... of
ciklus abban tér el afor ... in
ciklikustól , hogy az objektum értékein megy végig.
Viszont akkor nem értem, hogy a változó miért nem veszi fel az objektum értékét, miért kell egyObject.value(obj)
utasítás?pl.:
for (let p of obj) { // TypeError: obj is not iterable
// …
} -
disy68
aktív tag
A te példádban az a legfőbb gond, hogy az ajax hívás aszinkron (XMLHttpRequest) és amikor hivatkoznál a testclick id-jú elemre, az még nincs benne a dom-ban. Az után tudsz csak rá hivatkozni, hogy az ajax kérés lefutott.
Erre az egyik lehetőség egy callback lehet, ami akkor lesz meghívva, amikor a content már bekerült a dom-ba.
Hogy legyen más is mint a korábbi minta, a lekérést átírtam fetch api-ra, meg kiszedtem a fölösleget, hogy átláthatóbb legyen: link
-
btz
addikt
"Ezt alapvetően én nem nagyon ajánlanám, jobb az, ha az egyes event listener-eknek csak akkor futnak le, ha szükséges"
Értem, és milyen módosításokat tudnék elvégezni ebben a helyzetben, tehát csak akkor fusson amikor szükséges, ne minden esetben? Talán szűkítsem le egy adott ID-vel rendelkező divre? Viszont akkor működni fog?
''a JavaScript event capure mechanizmusa"
Köszi. Megpróbálom elolvasni és értelmezni
-
cattus
addikt
Teljesen még nem tiszta, hogyan is képes látni ez a content.html-ben lévő button ID-t
Két dolog miatt. Egyrészt, mert az egész
document
-re raktad rá az event listener-t, tehát az minden egyes, az oldalon történtclick
eseményre (attől függetlenül, hogy mire kattintottál) le fog futni. (Ezt alapvetően én nem nagyon ajánlanám, jobb az, ha az egyes event listener-eknek csak akkor futnak le, ha szükséges)
A másik dolog pedig a JavaScript event capure mechanizmusa, amivel aclick
esemény végigfolyik a DOM elemein. -
btz
addikt
Közben másik fórumon sikerült megoldani a problémát.
Ez az eredeti nem működő kód CODESANDBOX
Az ebben lévő addEventListener nem tudta elérni a #testclick ID-jű elemet.
<script>
let output = document.querySelector("#output");
let testclick = document.querySelector("#testclick");
testclick.addEventListener("click", testclickevent());
function testclickevent() {
output.innerHTML = "TEST CLICK IS WORKING";
}
</script>Ebben az alábbi kód szerepel
<script>
document.addEventListener("click", function(e) {
var elem = e.target;
if (elem && elem.id == "testclick") {
output.innerHTML = "THIS SOLUTION IS WORKING";
}
});
</script>
Teljesen még nem tiszta, hogyan is képes látni ez a content.html-ben lévő button ID-t, de működik. Gombnyomásra kiírja, hogy "THIS SOLUTION IS WORKING" -
btz
addikt
Üdv
Ezzel a w3-as módszerrel van beillesztve html a html-be. Ez működik is remekül, kivéve, hogy addEventListener-el szeretnék a content.html fájlban egy click vagy change eventre funkciót, az nem reagál. Ha a content.html fájlt önmagában (direktben) megnyitom, akkor működik, reagál a kattintásra és az select mező cseréjére is.
Példakódot délután majd rakok fel.
Szerintetek mi lehet a gond? Találkoztatok e már hasonló problémával? -
venic
kezdő
Nagyon köszi a választ.
Fentebb alratar kódja igy néz ki:const extra = parseInt(document.querySelector("input[name='extra']:checked").value);
const souce = parseInt(document.querySelector("select[name='souce']").value);
(Az enyém is hasonló különben)
És itt a radio gombnál (extra változónál) úgy utalunk rá, hogy ...:checked...
És a szósznál ugyanígy próbáltam, de nem működött:const souce = parseInt(document.querySelector("select[name='souce']:checked").value);
Itt akkor másképp kell?
value-nál én egy számot adtam meg, mivel számolni szeretnék vele később. -
venic
kezdő
válasz
alratar #7917 üzenetére
És már jól működik Neked?
Nekem a szószt nem jól veszi be.
Írták a többiek, hogy .value legyen a végén a szósznál is, de gondolom ahhoz a html-ben is be kell irni a value-t.
A feltéteknél a radio gombnál be tudtam value-t irni a html kódba és működik is (jól számol vele), de a szósznál, a checkbox-nál nem tudom, azt hogy és hol kellene megadni, a value-t, hogy tudjon vele számolni. Akár bejelölöm hogy kell szósz, akár nem, nekem beveszi a value-t és számol vele, mintha mindig kérném.
Szóval kérdés, hogy checkbox esetén ha beirom value-nak az értéket, akkor arra hogy kell utalni, hogy be van-e pipálva vagy nincs? -
dqdb
nagyúr
-
alratar
addikt
-
btz
addikt
var height = 200;
var height250 = 200+250;
var x = `'${height250}px'`;
var x = '450px';
document.getElementById('demo').style.paddingTop = x;Ha az alsó var x-et használom, beállítja demo element paddingtop-ját 450px-re , ha kikommentelem az alsó var x = ''450px'-et, akkor nem. Pedig a felső var x értéke ugyan az kell, hogy legyen.
-
dqdb
nagyúr
válasz
alratar #7904 üzenetére
function calcAmount() {
const hamburgerPrice = 1200;
const extra = parseInt(document.querySelector("input[name='extra']:checked").value);
const souce = parseInt(document.querySelector("select[name='souce']").value);
const quantity = parseInt(document.querySelector("input[name='quantity']").value);
document.querySelector("span[id='amount']").innerHtml = (hamburgerPrice + extra + souce) * quantity;
}Feltéve, ha jók a selectorok. Ilyenkor a legszerencsésebb megoldás legalább
console.log
hívásokkal naplózni minden értéket, ha debugolni nem akarsz. -
alratar
addikt
Sziasztok,
Egy kis segítségre lenne szükségem.
Írtam egy funciont egy html oldalhoz:function calcAmount() {
const hamburgerPrice = 1200;
const extra = parseInt(document.querySelector("input[name='extra']:checked"));
const souce = parseInt(document.querySelector("select[name='souce']"));
const quantity = parseInt(document.querySelector("input[name='quantity']"));
document.querySelector("span[id='amount']").innerHtml = (hamburgerPrice + extra.value + souce.value) * quantity;}
Eredményként mindig NaN-t kapok.
Mi lehet a gond? -
venic
kezdő
Nagyon köszönöm a válaszokat.
Tanuló fázisban vagyok, csak gyakorolgatok, szóval lehet sokmindent nem jól csinálok...
Eredetileg php-ban irodott a kód, szóval node azért nem merült fel, gondolom igy keverni nem nagyon célszerű.
Van egy form, amit kitöltene a felhasználó és eddig php-val dolgoztam fel az adatokat, amik mentek adatbázisba.
Csak most azt szerettem volna megoldani, hogy a felhasználó módosíthasson a korábban beirt és már feldolgozott adaton és ezt kezdtem JavaScript-ben megirni, mert úgy gondoltam, hogy csak azzal tudom ezt kezelni, csak ugye az adatbázisba nem sikerül berakni az adatot, ami egyelőre JavaScript-ben van meg.
Megnézem az AJAX-ot is, köszi. -
nevemfel
senior tag
Ha jól értem, akkor kliensoldalon rendelkezésre áll az adat, és te szerveroldalon akarod felhasználni. Erre az AJAX a megoldás.
Az elosztott rendszerek, mint amilyen a web is, általában ilyenek. Az esetek többségében nem triviális az, hogy van egy adat, ami az egyik oldalon rendelkezésre áll, és azt a másik oldalon szeretnéd felhasználni. Sajnos ezek a rendszerek általában nem transzparensek.
Új hozzászólás Aktív témák
Hirdetés
- Na! Ez egy JÓ utólagos autós fejegység - Minix CP89-HD
- Kerékpárosok, bringások ide!
- sziku69: Fűzzük össze a szavakat :)
- PayPal
- Horgász topik
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Diabetes - Cukorbetegség
- Diablo 3
- Megvan, milyen chipet használ a Pura 80 Ultra
- PlayStation 3
- További aktív témák...
- Lenovo Legion 5 15ACH6 Az ár irányár, komoly érdeklődés esetén van lehetőség egyeztetésre
- Azonnali készpénzes Sony Playstation 4 Slim / PS4 Pro felvásárlás személyesen/csomagküldéssel
- Zebra ZP505 EPL - Hőpapíros címkenyomtató
- VÉGKIÁRUSÍTÁS - REFURBISHED - HP Elite / ZBook Thunderbolt 3 docking station
- Telefon felvásárlás!! Samsung Galaxy A20e/Samsung Galaxy A40/Samsung Galaxy A04s/Samsung Galaxy A03s
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: PC Trade Systems Kft.
Város: Szeged