-
Fórumok
LOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Tabletek, E-bookok Nyomtatók, szkennerek PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
-
Frissítve: 2014-02-25 10:20 Téma összefoglaló
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
-
cattus
addikt
-
cattus
addikt
testResult.myArrayNodList[yy].innerText = myArrayNodList[yy + 1].innerText;Itt hogyha a
testResultobject-nek még nincsmyArrayNodListkulcsra érték definiálva, akkor így nem fogsz tudni neki értéket adni, mivel atestResult.myArrayNodListundefined-ra fog resolve-olni, és undefined értéket nem tudsz indexelni. Előbb inicializált értéket kell adnod neki a loop-on kívül, utána tudod indexelni:testResult.myArrayNodList = [];vagy amikor inicializálod:
let testResult = {myArrayNodList = []};
btw felteszem hogy ez egy typo és amúgymyArrayNodeListszeretne lenni. -
cattus
addikt
-
cattus
addikt
-
cattus
addikt
Próbáld meg az itt leírt módszert.
function delay(ms) { return new Promise(res => setTimeout(res, ms)); }
async function task(el) {
el.open = true;
await delay(1000);
el.open = false;
}
const details = Array.from(document.getElementsByTagName("details"));
async function run() {
for (let i = 0; i < details.length; i++) {
await task(details[i])
}
}
run();Ahogy olvastam, forEach használatával nem fog menni amit szeretnél, mert annak a callback függvényében nem lehet await-et használni blockingra.
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
Na pont az ilyen példakódok miatt gyújtanám fel a w3schools-t.
-
cattus
addikt
fetch API-val küldesz egy post request-et
-
cattus
addikt
-
cattus
addikt
Kicsit gondolkoztam rajta, nekem a következő jutott eszembe: sorbarendezed mindkét tömböt és az elejéről indulsz két indexszel (i indexeli az A tömböt, j meg a B tömböt). Ha A != B[j], akkor mindkét indexet növeled. Ha A(i) == B[j], akkor növeled a számlálót és megnézed A[i + 1]-et és B[j + 1]-et. Ha ezek is egyeznek A(i)-vel vagy B[j]-vel, akkor növeled i-t és j-t is. Ha csak az egyik egyezik (mondjuk A[i + 1] már más, de B[j + 1] még nem), akkor i-t addig növeled, amíg ráfutsz a következő számra, j-t meg csak 1-gyel, és jöhet elölről az egész, amíg i vagy j el nem éri a tömb végét. Nem csináltam rá kódot, szóval lehet valami edge case-t kihagytam, de én így indulnék neki.
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
1. Amit megadsz callback a duplikálás check esetében, azt a függvényt ugyanúgy meg kell adnod az új sor adott elemének is (enélkül az eseménykezelő csak az első betöltésnél már meglévő HTML elemekre lesz érvényes. Ehhez az kell, hogy nem egy anonim függvényt adsz át, hanem egy már létezőt:
function checkNullAndDuplicates() {
var value = $(this).val();
$('[name="zona_szam[]"]').not(this).each(function(){
if($(this).val() == value || value=="0") {
document.getElementById("error").style.display= '';
}
})
}
}
$('[name="zona_szam[]"]').on('change', checkNullAndDuplicates);Ezt a függvényt kell az új DOM elemnek odaadni. Mivel a mostani módszered egy sima HTML stringet ad hozzá a DOM-hoz, ez elég körülményes, de azt meg tudod egyszerűen csinálni, hogy egy sor hozzáadása után lekéred az összes
[name="zona_szam[]"]elemet, és megadod az onchange eseménykezelőnek a fent definiált függvényt.2. A change eseménykezelőben megnézed, hogy jó-e az érték, és ha igen, akkor átírod az error elemnek a style.display property-jét 'none'-ra.
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
Reprodukálni tudod esetleg egy jsfiddle-ben? A második betöltés alatt azt érted hogy F5-tel frissítesz, vagy hogy anélkül csak újra lefuttatod a JS kódot?
a "Miért nem használsz CSS-t hozzá" és hasonló kérdéseket mellőzzétek.
Pedig valószínűsítem, hogy az általad felvázolt problémát megszüntetné.
-
cattus
addikt
Tudom, hogy keretrendszer a menő, de ha mondjuk sima Javascriptben kell megírni egy frontendet, ti hogyan készítitek el a templatet?
Sehogy, használok egy már meglévő, jól bevált, egyszerű megoldást, pl. Svelte, Alpine van htmx. Ezek egyike sem jelent nagy package méretet, és hosszú távon sokkal kényelmesebb használni, mint egy saját megoldást, ami 100%-ban feature-incomplete, 100%-ban tartalmaz rejtett bugokat és 100%-ban jobban megéri használni, mint újra feltalálni a kereket.
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
Gondolom minden egy form-on belül van és annak az onsubmit eseményére iratkozol fel (vagy az ok gomb onclick-re?). Ez esetben az eseményt kezelő függvényben paraméterként kapsz egy
eventobjektumot, ennek apreventDefault()függvényét kell meghívnod, valahogy így:const form = document.getElementById('myform');
form.addEventListener('submit', event => {
event.preventDefault();
console.log('asd');
}); -
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
Megpróbálom minél érthetőbben / egyszerűbben összefoglalni:
Először is telepítened kell a Node.js-t a gépedre. Ezt innen letöltve tudod megtenni.
Ha ezzel végeztél, nyitnod kell egy terminál / CMD / powershell ablakot. Ezen keresztül tudod telepíteni a fent említett programot az
npm install -g gedcomparancs kiadásával.Ezután még mindig a parancssoros felületen kell majd elnavigálni abba a könyvtárba, ahol a fájlod található. Ennek egy alternatívája, hogy megnyitod a windows intézőt, elnavigálsz ott az adott mappába, majd a címsorba az elérési út helyére beírod hogy cmd, majd nyomsz egy entert. Ekkor meg fog nyílni egy parancssor ablak az adott mappához.
Ezután ki kell adnod a következőhöz hasonló parancsot:
parse-gedcom sajatfile.ged kimenet.json
Itt a sajatfajl-t cseréld le arra ami a fájlod neve (a kiterjesztés ne maradjon le).Amint lefutott, a könyvtárban ott lesz a kapott JSON fájl (a példában kimenet.json néven).
-
cattus
addikt
Böngészőn keresztül JS-sel lokális fájlt nem fogsz tudni olvasni. Vannak rá workaround-ok, pl. hogy a JSON értékét stringként eltárolod egy JS változóba, és ezt ugyanúgy belinkeled a HTML-be mint az ezt feldolgozó JS-t (ez volt látható az általad linkelt megoldásban), vagy indítasz egy HTTP kérést a fájlod felé. Az már rajtad múlik, hogy melyik a neked megfelelőbb megoldás.
-
cattus
addikt
-
cattus
addikt
Az is lehet, hogy rossz irányból közelíted meg a problémát. Próbáld meg azt, hogy a feladatot elkezded lebontani egyre kisebb részekre, amíg az atomi dolgokat nem kapod (ehhez kell egy változó, amivel xy-t kell csinálni, ahhoz kell egy ciklus, etc.), nyilván időközben sok kereséssel / utánanézéssel, hogy mit hogyan érdemes megoldani.
Nem tudom milyen háttérrel rendelkezel vagy hogy miért kezdtél neki az egész programozásnak - és ezt most tényleg nem sértésnek szánom -, de az is igaz, hogy nem mindenkinek való a programozás. Érdemes elgondolkodni mit szeretnél valójában és aszerint tovább haladni.
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
Kisebb projektekhez én is Svelte-et vagy natúr JS-t ajánlanék, nem azért mert a többi már szar, hanem mert adott feladathoz érdemes a leginkább hozzávaló eszközt választani.
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
Hát szerintem előbb-utóbb úgyis doksit kell nézegetni, az autocomplete csak egy ideig könnyíti meg az ember dolgát. Én a date-fns-t azért is szeretem, mert moduláris (kisebb bundle size), jól lehet egymásba ágyazni a függvényeket, illetve natív JS dátum osztállyal dolgozik, míg a moment mindig csinál egy saját wrappert.
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
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.
-
cattus
addikt
-
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. -
cattus
addikt
Ha jól tudom a
for ... ofciklus abban tér el afor ... inciklikustól , hogy az objektum értékein megy végig. -
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éntclickesemé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 aclickesemény végigfolyik a DOM elemein. -
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
Igen, ugye az a probléma, hogy az event handler-ben a bubble-capture miatt a target az az ikon lesz. Egy potenciális fix, ha kicseréled a
const editbutton = e.target;sort erre:const editbutton = e.currentTarget; -
cattus
addikt
-
cattus
addikt
Engedelmeddel írnék néhány feedbacket a kódhoz:
HTML:
A `big` HTML tag obsolete, nem javasolt a használata
<input type="button" /> helyett inkább használjunk <button>-t.
Nem szerencsés, ha a `name` attribútom ugyanaz több input elemnél is, mivel esetleges szerveroldali feldolgozásnál ez azonosítja az egyes elemeket.JS:
var helyett ajánlott let vagy const használata
Személyes preferencia, de szerintem nem mindegy, hogy JS-ből milyen módon kérdezed le a DOM elemeket. Pl. te class alapján teszed, én ezt akkor tenném, ha pl. a class-t akarom módosítani. Ebben az esetben inkábbdocument.querySelectorAll('input[type="checkbox"]')-ot használnék (így pl. már eleve ki van szűrve minden input, ami nem checkbox).A for ciklus helyett megcsináltam array műveletekkel: fiddle
+1: érdemes jól formázottan tartani a kódot, sokat segít az olvashatóságon (a JSFiddle tudja automatikusan a jobb felül lévő Tidy gombbal).
-
cattus
addikt
> Az inline stylekkel ugyszint semmi baj nincs, objektiven gyorsabb egy weboldal betoltese ahol nem egy bazinagy css fajlban szerepel minden, de továbbmegyek, a legtobb css-in-js solutin is "inline" style attributumokkent irodik es run/build-time valik style tagekke.
Az inline style-lal az a baj, hogy se formázás, se autocomplete, se write-time error checket nem kapsz, amikor írod, plusz újrahasználni se tudod a stílusokat. A CSS-in-JS libeknek meg csak az outputja inline style, nem véletlenül nem írsz ott se közvetlenül a style tag-be.
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
Ilyen automatizált megoldás szerintem nincs, de itt le van írva pár dolog, meg ha 13 sor, szerintem ide is bedobhatod.
Amúgy csak egy megjegyzés, hogy a jQuery is JavaScript (pontosabban egy JS-ben írt library), gondolom itt te a DOM API-ra gondolsz, hogy ne kelljen a teljes jQuery-t behúzni.
-
cattus
addikt
-
cattus
addikt
Amúgy a Nest is expressre épít, csak elég sokat elwrappel. Nekem az architektúrája eléggé bejött, meg jóval "opinionated-ebb", mint egy sima express, ezért kezdőknek talán jobban ajánlott. Nálunk a cégben is ezt hozták példának, mint go-to node.js framework. Nameg default typescript-et használ.
Arcanus: amúgy amiket felsoroltál, azoknak nagy része nem framework, hanem build tool.
-
cattus
addikt
-
cattus
addikt
Csinálsz a '?year=<évszám>'-ra egy regexet. Ha már tartalmazza a link, akkor kicseréled, ha nem, akkor hozáfűzöd.
const regex = /\?year=\d{4}/
if (links[i].href.match(regex)) {
links[i].href = links[i].href.replace(regex, `?year=${year}`)
} else {
links[i].href = `${links[i].href}?year=${year}`;
} -
cattus
addikt
-
cattus
addikt
-
cattus
addikt
Elképesztő. Elágazást használtál egy programban. Meghajlok kódoló tudásod előtt.
-
cattus
addikt
-
cattus
addikt
-
cattus
addikt
x.textContent = x.textContent.replace("Ft", "");x.textContent = x.textContent.replace(",", "."); -
cattus
addikt
Az első esetben
xa01[0]ésxa01[1]-nek amikor értéket adsz, akkor két különböző tömb lesz létrehozva, mivel JavaScript esetében ezt jelenti a[]szintaxis.A második esetben viszont egy már előre létrehozott tömböt (
xe) adsz odaxa01[0]-nak ésxa01[1]-nek. Ilyenkorxeértéke nem másolódik le, csak egy referencia lesz beállítva rá, és ezért válozik megxa01másik értéke, ha az egyiket változtatod. -
cattus
addikt
Ne string-be mentsd el a regexet, hanem regexként, így:
a2 = /\|\|/gm -
cattus
addikt
myStringVariable.replace(/\|\|/gm, '|')Eza változóban kicseréli az összes '||' karaktert '|' karakterre. -
cattus
addikt
Új hozzászólás Aktív témák
-
Fórumok
LOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Tabletek, E-bookok Nyomtatók, szkennerek PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- PowerColor Radeon RX 7900 XTX RED DEVIL OC 24GB - Garancia - BESZÁMÍTOK!
- Új, Gamer félgép - GIGABYTE B650 EAGLE AX + Ryzen 7 7800X3D + Corsair 2x16GB DDR5 6200MHz
- Bomba ár! HP EliteBook 850 G5 - i7-8GEN I 16GB I 512SSD I 15,6" FHD I Cam I W11 I Garancia!
- Bomba ár! Fujitsu LifeBook E780 - i7-640M I 8GB I 160GB I Nvidia I 15,6" HD+ I Cam I W10 I Garancia!
- Bomba ár! HP EliteBook 2540P - i7-640LM I 4GB I 160GB I DVDRW I 12,1" WXGA I Cam I Garancia!
- Azonnali készpénzes INTEL CPU NVIDIA VGA számítógép felvásárlás személyesen / postával korrekt áron
- LEXAR 32GB DDR4 3200 MHz laptop RAM
- Apple iPhone 14 Plus 128GB, Kártyafüggetlen, 1 Év Garanciával
- Lenovo ThinkPad E15 Gen 2 15,6" - i7 1165G7, 16GB RAM, 512GB SSD, jó akku, számla, 6 hó gar
- Yenkee YMC 1030 Mikrofon Kit (mikrofontartó kar, kábel, stb.)
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
