-
Fórumok
Mobilarena - 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 Nyomtatók, szkennerek Tabletek, E-bookok 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ésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁ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
Mert az első esetben olyan, mintha azt írnád le, hogy
object.foo.bar = baz. Itt a lánc minden,barelőtti elemének léteznie kell. A második esetben (objektum.vizbol) csak azobjektum-nak kell definiáltnak lennie. -
cattus
addikt
Hello,
Tudnátok segíteni?
Fogalmam sincs mi lehet a baj.
Kérlek nyissatok meg a konzolt ott látszik a hiba.
Valami undefined a 28. sorban.
De mi, és miért?
Log megmutatja a változók értéket.
28ik sorban az üres object be teszek key-t és value-t.
Key nek is van értéke, log ban látszik mi az. És value nek is van értéke, log ban látszik mi az. Nem értem mi undefined.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
Sziasztok!
Tudom, hogy ide OFF, de nincs jobb topik.
Typescript-tal szenvedek.Egy táblázat elemeit szeretném eltenni valamilyen adatstrukturába úgy, hogy minden oszlopnak van neve.
Eddig ez nem is gond, de nem tudom előre, hogy az oszlopoknak mik lesznek a nevei.A TS meg előre kérné, hogy a table.columnName deklarálva legyen.
Próbálkoztam egy olyannal, ami associative array névre hallgat, de az mindtha nem akarná key-t bevenni string változóból, csak kiírva, hogy 'oszlopnév'.

let tablazat: {[key: string]: string[] } = {};...fut a kod, a key és a cellastring változó kap értéket...tablazat[key].push(cellastring);Es itt a tablazat[key]-re dob egy ilyet:
TypeError: Cannot read properties of undefined (reading 'push')
Ezt a hibát futásidőben kapod? Mert itt inkább arra tudok gondolni, hogy a
tablazatváltozóban nem létezik az adottkey-hez tartozó tömb, amin meg akarnád hívni apushmetódust. -
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
const selectedNumbers = new Set();function generateUniqueRandomNumbers(min, max, count) {const uniqueNumbers = new Set();while (uniqueNumbers.size < count) {const randomNumber = Math.floor(Math.random() * (max - min + 1)) + min;uniqueNumbers.add(randomNumber);}return Array.from(uniqueNumbers);}function showRandomNumber() {const uniqueRandomNumbers = generateUniqueRandomNumbers(1, 500, 500);const randomNumber = uniqueRandomNumbers[0]; // Csak az első számot jelenítjük megdocument.getElementById("randomNumberDisplay").textContent = `${randomNumber}`;}function selectNumber() {const displayedNumber = parseInt(document.getElementById("randomNumberDisplay").textContent);selectedNumbers.add(displayedNumber);showRandomNumber();}// HTML gomb kattintás esemény kezelésedocument.getElementById("selectButton").addEventListener("click", selectNumber);Minden egyes gomb kattintáskor újragenerálod a uniqueNumbers-et, a selectedNumbers-t viszont nem.
Tombolánál szerintem úgy kéne működnie, hogy egyszer legenerálod a random tömbödet az elején, majd utána csak kiveszel belőle számokat (és opcionálisan átrakod egy másikba).
-
cattus
addikt
Lehetne egy node.js kérdésem?
Ha "készre faragtam" a kódot, hogyan tudom a géppel együtt elindítani?
Ennek a lerásnak a mentén készítettem egy .service fájlt, de tojik elindulni.
A service fájl:
[Unit]
Description=bmd_hyperdeck
[Service]
Type=simple
Restart=always
User=pi
Group=pi
WorkingDirectory=/home/pi/bmd_hyperdeck_time_remaining
ExecStart=/usr/bin/npm start
[Install]
WantedBy=multi-user.targetA systemctl status kimenete:
● bmd_hyperdeck.service - bmd_hyperdeck
Loaded: loaded (/etc/systemd/system/bmd_hyperdeck.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2024-02-09 13:00:56 CET; 4s ago
Process: 27983 ExecStart=/usr/bin/npm start (code=exited, status=1/FAILURE)
Main PID: 27983 (code=exited, status=1/FAILURE)
CPU: 977ms
febr 09 13:00:56 pi npm[27983]: '/usr/share/nodejs/npm/bin/npm-cli.js'
febr 09 13:00:56 pi npm[27983]: ]
febr 09 13:00:56 pi npm[27983]: }
febr 09 13:00:56 pi npm[27983]: Node.js v20.10.0
febr 09 13:00:56 pi systemd[1]: bmd_hyperdeck.service: Failed with result 'exit-code'.
febr 09 13:00:56 pi systemd[1]: bmd_hyperdeck.service: Scheduled restart job, restart counter is at 5.
febr 09 13:00:56 pi systemd[1]: Stopped bmd_hyperdeck.
febr 09 13:00:56 pi systemd[1]: bmd_hyperdeck.service: Start request repeated too quickly.
febr 09 13:00:56 pi systemd[1]: bmd_hyperdeck.service: Failed with result 'exit-code'.
febr 09 13:00:56 pi systemd[1]: Failed to start bmd_hyperdeck.Van bármi ötlet tipp, hogy mi a gond mindek nézzek utánna?
A /home/pi/bmd_hyperdeck_time_remaining mappában van package.json, amiben van egy start script?
-
cattus
addikt
Mi a matek / logika arra, hogy van egy object amiben van egy szám tárolva
pl.:
{
'objNumb' = 42,
...
}
Van egy számok lista amit egyesével végigtolok egy cikluson, hogy megnézze az adott sor értékét, ami lehet bármilyen egész szám pl.:
700
49
300
24
51
44A feladat az lenne, hogy ha a soron következő számot összehasonlítva az objectben lévő értékkel és:
Ha legalább 5-tel kisebb az értéke a vizsgált számnak mint az objectben lévőnek, vagy ha maximum 5-tel nagyobb, akkor cserélje le az objectben lévőt az éppen vizsgált számmal.
Tehát bent van 42, jön egy 44-es szám, akkor az objectben 44 lesz az érték amihez a következőt hasonlítja.
Ugye itt az a csavar, ha 42 van bent és jön 48, akkor nem cseréli le, de ha 48 van bent és jön a 42, akkor lecseréli.A vizsgált számból kivonod az object-ben lévőt. Ha a kapott eredmény kisebb vagy egyenlő mint -5, vagy nulla és +5 közé esik, akkor átírod az object-ben lévő számot.
-
cattus
addikt
-
cattus
addikt
Egy json file-ba írtam az adatokat.
{
"elso" : "www.elso.hu",
"masodik" : "www.masodik.hu",
"elso" : "www. harmadik.hu",
"masodik" : "www.negyedik.hu"
}A gond az, hogy többször van ugyanaz a név, és nem változtathatom meg.
Viszont a linkek így nem működnek.
Hogyan módosítsam?
A gond a kikérés nagyon megváltozik, ha pl tömbbe rakom az első kettőt és masikba a második kettőt.Tudom, nem jó a kérdés, de ha tudnám a kérdést, akkor rá tudnék keresni, vagy a válasz is eszembe jutna.
Jól értem hogy a JSON-ön belül több kulcs (pl. elso) többször szerepelhet? Szükséges neked az hogy ezen kulcs alapján érd el a linkeket, vagy megfelel más is (pl. tömbben index alapján?). Mi alapján rakod össze a JSON-t?
-
cattus
addikt
Hello,
{
"1900" : ["1900 Joan of Arc", "1901 Bluebeard", "1902 A Trip to the Moon", "1903 The Great Train Robbery", "1904 The Untamable Whiskers", "1905 The Nihilist", "1906 The Story of the Kelly Gang", "1907 First Prize in Cello", "1908 The Thieving Hand", "1909 Those Awful Hats"]
}Ez egy json file.
Hogyan tudom kikérni ezt:"1902 A Trip to the Moon" ?Ajax kikérés, majd
var posts = JSON.parse(xhr.responseText);
és innen nem megy továbbposts.1900[2]
Ez nem működik.
Tudom, hogy az 1900 miatt ,de nem tudom hogyan kell.posts[1900][2]
vagyposts["1900"][2]Melyik a helyes, vagy mindegy?
"for" ciklusba hogy rakom be hogy mind kiírja?
posts["1900"].forEach(post => console.log(post)) -
cattus
addikt
Üdvözlet!
Volt nemrég itt a fórumon téma, hogy a JavaScript mindössze 1 szálon fut.
Néha ezt a tényt be is bizonyítja. Mégis érdekes, hogy ha van egy ilyen kódom:let value = getValue();
function getValue() {
return true;
}
myFunction(value);
.
.
.
.
function myFunction(x) {
//
}...akkor a console hibát dob vissza, miszerint: '
x is not definied'.Kérdem én: Ha 1 szálon fut, akkor követnie kellene a műveleti sorrendet (fentről lefelé). Ilyen esetben miért nem történik meg? Nyílván
getValue();nem csak egy egysoros kód, hanem egy feltételrendszer. Mégis a program az előtt futtatnámyFunction(x);-et, mielőtt visszakapnávalueagetValue();értékét.
Ez az én olvasatomban azt jelentené, hogy párhuzamosan fut két function, és ha nincs visszatérő érték az egyikből addig, amíg a másik el nem jut arra a pontra, hogy használná, akkor hiba lesz az eredmény...
Nem tudom hol futtatod / mi van még a kódodban, de nekem nem dob hibát. Nem is kéne neki, hiszen x az egy bemeneti paraméter, nem kell hogy definiálva legyen korábban.
Rossz az olvasatod, a hoisting talán magyarázatot ad.
-
cattus
addikt
Köszönöm mindenkinek aki hozzá(m)szólt! Sikerült! Sokat tanultam belőle.
Ennek mintájára oldottam meg:
https://www.w3schools.com/js/js_ajax_php.asp
Csak zavar benne, hogy GET -el küldi a beszélgetés tartalmát a php vissza a JS-nek. Annak ugye van valami méret korlátja?! Hogyan lehetne a w3schools-os példát átírni POST -ra?Na pont az ilyen példakódok miatt gyújtanám fel a w3schools-t.
-
cattus
addikt
A frontend oldalon egy form adatait a submit gomb elküldi és a backend oldalon a php olvassa egy POST tömbből. Az lenne a kérdésem, hogy form nélkül hogyan lehet írni a POST tömbbe javascript-ből? Azaz szeretnék üzenni a php-nek.
fetch API-val küldesz egy post request-et
-
cattus
addikt
-
cattus
addikt
Hello,
van 2 tömb, szeretném megtudni, hogy mennyi elem egyezik meg benne.
Nem számít, hogy hol vannak a tömbben.
A 2 tömb mérete egyforma, de a tömbök méretét nem tudni.
pl a tömb 3 akkor b tömb is 3, ha a tömb 4 akkor b tömb is négy
Lehet bennük egyforma érték és lehet különböző
Akár lehet mind egyforma, pl a tömb 1,3,5,7,3 b tömb 7,3,2,3,1
De lehet mind különböző is.pl a tömb 1,2,3 b tömb 7,9,0
csak egy szám kellene mennyi egyforma a 2 tömbben
itt egy példa, de nem működik
4-et kellene kapnom, mert mind megeggyezik.
Lehet az egész rossz, csak próbálkoztam.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
sziasztok, a jquery topic egy éve csendes, gondoltam itt kérdeznék

Hajam kitépem, nem jövök rá, hogy lehetne végtelen animációt készíteni ebből:$(document).ready(function(){
var div1 = $(".ra_stat");
var div2 = $(".ra_stat2");
div1.animate({opacity: '1'}, 5000).delay(5000).animate({opacity: '0'}, 2000).delay(10000).animate({opacity: '1'}, 2000);
div2.animate({opacity: '0'}, 5000).delay(5000).animate({opacity: '1'}, 2000).delay(10000).animate({opacity: '0'}, 2000);
});Feladat: oldal betöltéskor div1 látszik, div2 nem, késleltetést követően div1 elhalványul, utána div2 láthatóvá válik. késleltetést követően div2 eltűnik, div1 láthatóvá válik
Egyszer meg is csinálja, és többször nem. Googliztam párat, de vagy teljesen szétesett az időzítés, vagy semmit nem csinált többet.
Ahogy néztem jQuery-ben elég rákos végtelen animációt csinálni, szerintem inkább próbáld meg pure CSS módszerrel. Vagy talán ez segíthet.
-
cattus
addikt
Sziasztok!

Egy kis segítséget szeretnék kérni.
Egy React alapú webalkalmazást fejlesztek, ahol adott ez a komponens:const MainLesson = () => {
const navigate = useNavigate();
const [ openID, setOpenID ] = useState();
const initialState = '0';
const [ childOpenID, setChildOpenID ] = useState(initialState);
useEffect(() => {
console.log('Beállítjuk a localstorage-nek az id-t');
localStorage.setItem('id', JSON.parse(childOpenID));
console.log('Beállítottuk a localstorage-nek az id-t');
});
return (
<div>
{LessonsData.map((lessonItem) =>
<div key={lessonItem.id} onClick={() => setOpenID(lessonItem.id)}>
{lessonItem.id !== openID
? <LessonCard taskItem={lessonItem} />
: lessonItem.id === openID && lessonItem.subsection > 0 ?
lessonItem.child.map((lessonChildItem) =>
<div key={lessonChildItem.id}
onClick={() => {
setChildOpenID(lessonChildItem.id);
}}
>
<LessonCard taskItem={lessonChildItem} />
{childOpenID !== '0' &&
navigate(`/lesson/${childOpenID}`)}
</div>)
: <LessonCard taskItem={lessonItem} />}
</div>)}
</div>
);
};
A komponens lényege röviden az, hogy ha egy adott LessonCard-ra rákattintok, akkor a localstorage-ben eltárolja annak az id-ját és ha az egy gyerekelem, akkor át is navigál a megfelelő oldalra.
Az App-ben pedig dinamikusan kezelem azt, hogy az id-nak megfelelő oldal nyíljon meg:function App() {
const authenticationContext = useContext(AuthenticationContext);
const getLessonID = () => {
console.log('Átadjuk az app-ben az id-t');
const id = JSON.parse(localStorage.getItem('id'));
console.log('id az app-ban:', id);
return id;
};
const lessonID = getLessonID();
console.log('lessonID:', lessonID);
return (
<Layout>
<Routes>
<Route path='/' element={<HomePage />} />
{!authenticationContext.isLoggedIn &&
<Route path='/authentication'
element={<AuthenticationPage />}
/>}
<Route path='/authors' element={<AuthorsPage />} />
<Route path='/contact' element={<ContactPage />} />
<Route path='/topics' element={<TopicsPage />} />
{authenticationContext.isLoggedIn &&
<Route path='/lessons' element={<LessonsPage />} />}
{authenticationContext.isLoggedIn &&
<Route path='/profile' element={<UserProfile />} />}
{authenticationContext.isLoggedIn &&
<Route path='/lesson/:id'
element={lessons.content.body.map(
block => block.id === lessonID &&
Components(block))}/>}
<Route path='*' element={<NotFound />} />
</Routes>
</Layout>
);
}
A probléma az, hogy ha rákattintok egy adott leckére, akkor szépen átnavigál a megfelelő oldalra és be is teszi a localstorage-be az id-t, viszont mivel az App nem renderelődik le újra, így a képernyőn mindig az előző lecke oldala nyílik meg. Ezt úgy kell érteni, hogy rákattintok először a 21-es id-jú leckére, majd visszamegyek és meg akarom nyitni a 22-es id-jú leckét, akkor az url jó lesz, tehát "localhost:3000/lesson/22" lesz, de a 21-es oldalát látom. Ha ráfrissítek az oldalra, akkor marad a jó url, viszont már a 22-es leckét fogom látni.
Az lenne a kérdésem, hogy szerintetek hogyan lehetne megoldani azt, hogy azelőtt kapja meg az App localstorage-ból az id-t, mielőtt még elkezdené lerendelni az adott komponens, így elérve, hogy jó oldal legyen megjelenítve?Előre is köszönöm a segítséget!

Nem lenne egyszerűbb a kattintható komponenst egy valamilyen Link componens-be wrappelni? És akkor nem kell foglalkozni a localStorage dologgal, hanem a router kezelné az egészet.
-
cattus
addikt
Milyen könyvtárat ajánlotok most kliens oldalra? Ilyen klasszikus dolgok kellenek, hogy táblázatok, egy-egy rekord szerkesztése, kb. mint egy ügyviteli rendszerben, semmi extra, de azért ne a 90-es évek table kinézete. A szerverről JSON-LD-t küldenék, vagy max JSON-t valami REST-es megoldással. Ha lehet ne legyen nagyon elrugaszkodott, nem vagyok oda a túlzott absztrakcióért.
Én ag-grid-et használtam korábban, az ingyenes része is elég sokat tud, és van integráció a három nagy framework-höz.
-
cattus
addikt
Sziasztok
Van egy táblázatom, ahol a sorszámnak egyedinek kell lennie és nem lehet 0 sem.
2 dologot nem tudok még:
1. Azokra a sorokra nem működik, amiket utólag adok hozzá.
2. A hibára figyelmeztető üzenet szeretném, ha eltűnne javításra, ne kelljen X-re kattintani.
előre is köszi
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
Az adott div children-jein vegigmesz egy rekurziv hivassal, es mindig listazod az aktualis node-ot.
-
cattus
addikt
Köszi, akkor ezt hanyagolom

.... viszont

Ugyanez a script megjelenít egy error span-t, ha ugyanazon számértéket talál a táblázatom numbers oszlopában. Az a bajom, hogy már beíráskor megteszi ezt, én pedig azt szeretném, ha csak akkor futna le, mikor átlépek egy másik mezőbe.
(Ez egy olyan táblázat, melynek első nyolc sorában van 1-8-ig terjedő szerkeszthető sorszám, utána meg a muksó annyi sort ad hozzá, amennyit szeretne. Ezért van az, hogy pl a 2. sor 11-re való átírása is hibát ad, mert már megtalálta az 1-es sorszámot egy sorral feljebb.
Ha ezt akkor ellenőrizné, mikor elhagyom a mezőt, akkor kiiiirály lenne. #9024)$('[name="sorszam[]"]').on("input", function () {
var value = $(this).val();
$('[name="sorszam[]"]')
.not(this)
.each(function () {
if ($(this).val() == value) {
document.getElementById("error").style.display = "";
}
});
});köszi

A focus out eventre lesz szükséged.
-
cattus
addikt
Sziasztok!
Szöveget szeretnék kirakni valamiben weblapra, amit js-ből átírnék. Környezet: desktop chrome utolsó verzió.
A leegyszerűsített példa így néz ki. Az első alert megérkezik, a második már nem, és nem írja át a szöveget. Mi a baj a <span> innerHTML-jével? Miért crashel az átíró script?
Köszönöm
Írja a konzolban: TypeError: document.getElementByID is not a function
Ami neked kell, az a
document.getElementByIdA kis- és nagybetűk számítanak. -
cattus
addikt
-
cattus
addikt
Üdvözletem!
Külső forrásból való adatfeltöltést csinálok, így használok Style beállítást JS alól is.
Ez a művelet hibátlan, amennyiben másodjára futtatom le. De első betöltésre nem hajlandó megcsinálni a pozícionálást, ami furcsa, mert minden mást igen.Részletesebben:
Betölt egy egyedi azonosítóval ellátott DIV-et, amely tartalmaz további egyedi azonosítóval rendelkező szöveget és képet. A JS határozza meg:
- A fő DIV paramétereit ----> Pipa
- A szöveg paramétereit ----> Pipa
- A kép paramétereit ---> Pipa, kivéve akep.style.position = x;Ez ugyanis csak második betöltésre kerül oda, ahol lennie kellene elsőre is.Mivel lehet a gond? Miért csak ez az egy paraméter? Illetve miért fut le második betöltésre, ha elsőre nem?
Előre is köszönöm a válaszokat, illetve megkérek mindenkit, hogy a "Miért nem használsz CSS-t hozzá" és hasonló kérdéseket mellőzzétek. A jelen feladat az itt felvázolt mintát követeli.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? Mi a véleményetek az általam használt struktúráról? Az init futtatja a render funkciót, ami többször felhasználható így az initbe több render funkció is betehető. Ha adatból kell dolgozni, akkor template string előállító funkciókat készítek. Ha iterálni kell, akkor készítek külön tempatet az itemnek és az összes itemből összeáll egy egységes string, amit a render megkap. Ha az adtaok változtatására van szükség, akkor template string kalkulátor funkciót is használok. Tehát így épül fel -> Adat -> Az összes adat tempate stringje -> Egy item template stringje (ha kell, akkor kalkulálással) Várom a ti megoldásaitokat is, hátha esetleg van jobb módszer is, amiből tanulhatok. https://codepen.io/bzozoo/pen/oNeqObY?editors=0010
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
Sziasztok,
A következőt szeretném megoldani:
Van 2 db select-em az egyikben, ha kiválasztom, hogy gyümölcsök, akkor a másodikban csak a gyümölcsök találhatók, ha pl az elsőben a zöldségek, akkor a másodikban csak a zöldségek jelennek meg.
Az a baj nem is tudom hogy nevezik ezt, ezért nemigen találtam róla infót.
Előre is köszi
Az első select onchange eventjére kell feliratkoznod és az alapján szűrni, hogy mi jelenjen meg a másodikban.
-
cattus
addikt
-
cattus
addikt
Sziasztok,
Van egy html kódom, amiben van egy legördülő menü (select).
JS-el szeretném ellenőrizni, hogy ha a user az alapértelmezett első soron hagyta a menüt( aminek a neve "válassz", akkor írjon ki egy hibaüzenetet (alert), hogy nem választott.
selectet, hogyan ellenőrzöm Javascripttel?Ezt szeretném ellenőrizni:
<label for="lehetosegek">Válassz lehetőséget!</label><p><select name="lehetoseg" id="lehetosegID" value="válassz!"><option value="valassz"> válassz!</option><option value="lehetoseg1"> Lehetőség1</option><option value="lehetoseg2"> Lehetőség2</option><option value="lehetoseg3"> Lehetőség3</option> </select></p>Ezzel:func.jsfunction ellenoriz() {userLehetoseg = document.getElementById('lehetosegID')if(userLehetoseg.value =='válassz!'){alert('Nem választottállehetőséget!')}Jelen állapotban ok gombra kattintva (ez hívja meg a ellenoriz()-t) csak alaphelyzetre állít mindent (Van egy név és egy e-mail cím bekérés is, de azt nem szeretném ellenőrizni, most nem azon van a hangsúly).
A segítséget előre is köszönöm! Ötletem nincs, hogy mit írjak az if() feltételvizsgálatba.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
Nem a képet mozgatod, hanem mivel kilóg a kép a viewport-ból ezért megjelenik a görgetősáv, amit lehet a nyilakkal is kontrollálni.
-
cattus
addikt
Sziasztok!
A számítógép egy alapvetően jó funkciója bosszant

Adott a JS-ben az a matematikai kifejezés (number.toFixed(1);), ahol meghatározhatjuk a tizedesek számát törtek esetében. Csakhogy, ez kerekít. Én ezt ki szeretném kapcsolni, nekem beleront az egyenletekbe.Pl az alap számom 12,46. A program jelenleg 12,5-öt ír ki, de nekem 12,4-re lenne szükségem.
Előre is köszönöm a megoldást!
Sajna nem tudsz mást csinálni, mint string-gé konvertálni, levágni ami nem kell, majd vissza: [link]
-
cattus
addikt
-
cattus
addikt
A button-nak nincs onsubmit event-je, vagy a button onclik-jét kell használnod, vagy körbevenni az egészet egy form taggel, aminek már van onsubmit eventje.
-
cattus
addikt
-
cattus
addikt
Keresés eredményéhez akarom kijelölni a találatokon belül a keresett szavakat.
Erre a<mark>tag-et használom.function markText(textContainer, textToMark){return textContainer.replace(textToMark, "<mark>" + textToMark + "</mark>");}Így viszont nem tudom kezelni a kis- és nagybetűket.
Pl. arra keresek, hogy "máté". A szerver visszaadja találatnak a "Máté"-t (nagy kezdőbetűvel) tartalmazó találatokat is (ehhez kapcsolódóan amúgy a PHP topikban van egy nyitott kérdésem, és nagyon összezavarodtam vele, ha valakinek magabiztos tudása van a keresés mikéntjével PHP-ban/SQL-ben, kérem, nézzen majd rá), viszont a JS csak azokat jelöli be, amik pontosan megfelel a keresésnek.
És nem tudom, hogyan kellene úgy módosítanom a fenti függvényt, hogy ha a szövegben az van, hogy "Máté" (nagy kezdőbetű), a keresési szöveg az "máté" (kis kezdőbetű), a találatban lévő sztringben a nagy kezdőbetűs Mátét is vegye körbe <mark> taggel. (Ha csak a kezdőbetűt kellene figyelni, könnyű lenne, viszont ugye lehet olyan találat is, ahol csupa nagybetű, vagy csak a 3. karakter nagy stb. És nekem az kellene, hogy kijelölje, bárhogyan is találja meg a "máté"-t: máté, Máté, MÁTÉ, mÁtÉ, MáTé stb.)
Lehet, valami nagyon egyszerű, és amint elküldöm a hozzászólást, eszembe is jut - de egyelőre nem jövök rá.
Hátha ti már találkoztatok ilyen helyzettel.
Köszi.
Regex segítségével be tudod állítani hogy a kis-nagybetű ne legyen probléma:
const regex = new RegExp(textToMark, "gi");
textContainer.replace(regex, "<mark>" + textToMark + "</mark>"); -
cattus
addikt
-
cattus
addikt
Persze, nekem is megvolt az npm install parse-gedcom, globális csomagként (ehhez kell a -g). Lehet, hogy linux alatt, bashben ez jól működiik, de windows cli-ben, adminisztrátor pirivilégiummal, és git-bash alatt sem megy így. Pedig kapott egy input.ged fájlt, nehogy az legyen a problémája, de semmi értékelhetőt nem produkált így sem, még egy értelmezhető error-t sem.
Nem megy linux alatt se, most megnéztem. Valszeg van valami baj a telepített futtatható fájllal, nekem unexpected token hibát ír ki (ami fura, mert a szkriptet megnyitva szintaxis terén jónak tűnik).
-
cattus
addikt
Az
npm install -g gedcomparancsból a -g részt nem szabad elhagyni, ez biztosítja hogy bárhonnan el tudod indítani a programot. Ugyanúgy adminisztrátor parancssorral futtattál minden parancsot? -
cattus
addikt
Először is köszönöm szépen,
Minden érthető, csak egy dolgot nem tudok.
Mit csináljak azzal amit letöltöttem a github-ról.
Az egy zp file. Kicsomagoltam, de hova másoljam, vagy azzal mi legyen?
Illetve parancssorban hova navigáljak, vagy mindegy hol írom be a parancsokat?
Mert azt írja ki "nmp" not recognized.
Bementem a kicsomagolt könyvtárba /github/ de ott is ezt írja ki.
Tuti vmi könyvtárba kell bemennem, de ne metudom melyikbe
Adminként indítottam a parancssort, tehát az se lehet gond.
Gép is újra lett indítva telepítés után.Nem kell semmit sem letöltened githubról, mivel az maga a program forráskódja, arra neked nem lesz szükséged.
Az
nmpaz egy typo a részedről,npm-et kell írnod helyette. -
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
Nem értelek titeket.
Kérkedtek a tudásotokkal, de amikor egy egyszerű kérdést teszek fel nem tudtok válaszolni, és ezért inkább tereltek.Te pl azt állítottad, a javascript semmire se jó, és teljesen felesleges.
Silence pedig hogy ő annyira jól tudja, hogy meg se tudja osztani.
Eddig bármit kérdeztem terelés lett belőle, majd gúnyolódás, és végül milyen királyak vagyunk megelégedés.
Nekem is van olyan tudásom amivel a porba alázhatnálak, csak nekem van inteligenciám is hozzá. Tudom, hogy mindenki volt kezdő, és nem mindenki egyforma, és legfőképpen nem felejtem el honnan jöttem.
Szégyeljétek magatokat.
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
Helyezd már kontextusba kérlek hogy pontosan mi az a use-case amit szeretnél, mert olvasom egy ideje amit ide írsz és őszintén nem értem mit szeretnél elérni.
-
cattus
addikt
az semmit sem ér ma már, sajnos azok már lejártak.
azóta igen sok változott 2004-es a könyv, Windows7, és internet explorer dicsőítése az első jó pár oldal.
Azóta nem hogy win7, de ie sincs, sőt flash sincs már és sorolhatnám.
Illetve írtam, hogy amit olvasni kell az nekem nem jó.
Pont azért tanulok abból amiket írtam.
Minegyik rátért a példákra, de azt egyik se mondja, hogy a terv honnan jön.
Ilyen projekt, olyan projekt, néztem vagy 30 teljes projektet, de egyik se mondja az egész honnan indul.
Mikor szakmát tanultam anno, azzal kezdtük: előkészítés
Hogyan kell előkészülni. Na ez sehol sincs. Pedig ez az alap után azonnal az első tégla.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
Próbáld meg esetleg így:
<HTML><link href="styles1.css" rel="stylesheet" id="themecss"><div id="kiskacsa">Szöveg</div><button onclick="change()">Változz át CSS2-re</button></HTML>És hozzá a JS:
const themecss = document.querySelector("#themecss");function change() {if (themecss.getAttribute("href") == "styles1.css") {themecss.href = "styles2.css";} else if (themecss.getAttribute("href") == "styles2.css"){themecss.href = "styles1.css";}}Nyugodtan javítsátok, ha így nem pontos. Meg persze lehetne switch-csel is, szebb is úgy talán. De nagyjából így működnie kellene.
Lehet működik, de nem igazán a legjobb megoldás arra, amit a kérdezőnk szeretne. Én is inkább azt mondanám, hogy csináljon a CSS-ben két class-t a két stílusra és azt változtassa, mintsem két fájlt használjon.
-
cattus
addikt
Nem kötelező JS-ben pontosvesszőt írni, csak nagyon speciális esetekben. A legtöbb szövegszerkesztő amúgy tudja hogy automatikusan kirakja a megfelelő helyekre, én személy szerint mindig úgy konfigurálom a lintert, hogy ne rakjon sehova pontosvesszőt.
-
cattus
addikt
Az csak a skeleton loader-ben van úgy megcsinálva, viszont azt túl sok idő lett volna a mostani formátumra ráhúzni.
Végül arra jutottam, hogy a template-be beraktam az feed image-khez, hogy ha betöltött, távolítsa el a háttérért felelős osztályokat:
onload="removeLoadingBackground(this);"function removeLoadingBackground(element){if (element.classList.contains("loading-bg")){element.classList.remove("loading-bg");}if (element.classList.contains("loading-logo")){element.classList.remove("loading-logo");}if (element.classList.contains("loading-img")){element.classList.remove("loading-img");}}Csak az a biztos tényleg, ha nem hagyom ott pörögni, ki tudja, melyik böngésző hogyan kezeli (vagy nem kezeli).
Nem a legszebb megoldás, ellenben működik.
Köszönöm a gyors választ amúgy mindenkinek.

A classList-nek van toggle metódusa, azzal nem kell if-eket írnod.
-
cattus
addikt
Nem igazán szeretnék sok időt elvesztegetni annak a kezelésére, hogy amíg nem töltenek be a képek a feed item-eknél, addig is látszódjon "valami".
Már megkapták a betöltendő kép méretét, így a helyük "le van foglalva".
Arra gondoltam először, betöltök valami pörgő-forgó ikont, de aztán azt bénának találtam.
Aztán jött az, hogy akkor megcsinálom rendesen egy loading skeleton-nal. Ez el is készült: https://codepen.io/pasztorlaszlo/pen/VwmBKpmViszont sajnos nem úgy kezdtem megcsinálni az oldal felépítését, hogy ezt könnyen be tudnám építeni, így arra gondoltam, leegyszerűsítem a dolgot, és ezt az (ill. ehhez hasonló) animációt simán beállítom a feed item template-jébe háttérnek. Amíg töltődik a kép, megy az animáció, nem "üresen" vár a user, látja, hogy oda töltődni fog valami, aztán betöltődik a kép és kész.
A kérdésem az lenne, hogy "okosak" annyira a böngészők, hogy ha "rá töltődik" a háttére a kép, (azt nyilván teljesen eltakarva), akkor az animációt leállítják, vagy ez a végtelenségig fut a háttérben is tovább, pörgetve a cpu-t, és kezelnem kell valahogy?Köszi!
Ha jól látom leszeded a loading class-r róla betöltéskor, amihez kötve van az animáció, így szerintem nem fogja utána tovább az erőforrást használni.
-
cattus
addikt
Sziasztok!
Tudnátok abban tanácsot adni, kérlek, hogy JS-tel hogyan tudnám egy külső HTML fájl tartalmát "behúzni"?
Jelenleg (ideiglenesen, és csak a teszt szerveren - nagyon kezdő vagyok még, így számomra egyelőre még mindig csak ideiglenes és teszt) szerver oldalon generálódik (SQL, PHP) a tartalom (töltődik fel adatbázisból tartalommal ez a külső HTML, és ez megy a kliensnek), de szeretném áthozni kliens oldalra, hogy csak a feltöltendő/kiegészítendő adatokat kelljen küldeni, a fix HTML kód a kliensen generálódjon.
Axios van használatban a PHP topikban tanácsoltak hatására. (@instantwater: Köszönöm!)
jQuery is van használatban - de csak a használt HTML template miatt, én még nem igazán használtam magamtól semmire.Illetve @instantwater: Javasoltad, hogy
Igen, célszerű az adatot JSONban leküldeni a kliensnek, és kliens oldalon React/Vue vagy valami hasonlóval generálni a HTMLt.
De a HTML már készen van, így gondolom, már nem tudom / nem kell használnom ezeket a keretrendszereket. Igazából ha kikerülhető, pár sor HTML kódért nem szeretnék (még) egy új keretrendszert bevezetni, ha nélküle is megoldható.Ahogy "elképzeltem", úgy "kellene" hogy működjön, hogy megy a request a szerver felé, az visszaküldi az adatokat, aztán a JS fogja ezt a HTML kód "template"-et, belerakja az előbb kapott adatokat, aztán megjeleníti. Minden egyes feed elemnél újra és újra. És így a szervertől az ismétlődő fix HTML kódot már nem kellene mindig eljuttatni, csak a változó részeket.
Viszont ez mind egy feed-be megy, ahol akár több 100-szor is kellhet egymás után, szóval vagy csak egyszer kellene betöltenem a feed item HTML template-jét, vagy pedig eleve JS-ben generálni. (Bár akkor pedig az ajánlott React vagy Vue lehet, amit használnom kellene? Csak igazából nem használnék egy külön keretrendszert, ha JS-ből is megoldható. )
Szerintetek hogyan lenne jobb?
Illetve ha van megoldási javaslatotok, megtámogatnátok egy-egy (kéznél lévő) példával?Saját keresésből erre futotta eddig (jQuery load() ), semmi más használhatót nem találtam:
https://www.tutorialrepublic.com/jquery-tutorial/jquery-ajax-load.php
Viszont itt azt nem értem, hogy hogyan adom meg neki a HTML fájlt. Mármint talán előbb azt is le kell kérni (Axios get)?Nagyon nem vagyok jártas ezekben, és hiába vannak meg az alapok, ez már nem alap dolog, így nem igazán látom át, most hogyan lehetne tovább menni.
Vannak csúnya megoldásra ötleteim, de jó lenne valami időtállóbba energiát fektetni. Ehhez kérném a segítségetek.Köszönöm!
Én nem igazán értem, mit akarsz csinálni. Vagy egy PHP által már kirenderelt HTML-ed, amit JS-ből akarsz még tovább bővíteni? Mert akkor csak megírod a JS-t és hivatkozol rá a HTML-ben.
-
cattus
addikt
Tehát a react és a vue már sz.r?
Ezért nem vagyok frontendes. Minden héten új framework
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
Nem, erre:
$.getJSON(hubaddress+"/smarthomeapi/toggle/"+$(this).data("deviceid"), (responsejson) => {// itt a this elvileg a megfelelő lesz$("#status").text(responsejson.displayname + (responsejson.state != true ? " kikapcsolva": " bekapcsolva"));}); -
cattus
addikt
Srácok, a jQuery topik nem igazán aktív, így kicsit offként, de ide írom a problémámat.
Adott ez a kódrészlet:
$(document).ready(function()
{
$(".iconlamp").click(function()
{
if ($(this).data("deviceid") != null)
{
$.getJSON(hubaddress+"/smarthomeapi/toggle/"+$(this).data("deviceid"), function (responsejson)
{
$("#status").text(responsejson.displayname + (responsejson.state != true ? " kikapcsolva" : " bekapcsolva"));
});
}
});
});Ez pedig a related HTML:
<h1>Smart Home</h1>
<div class="devices">
<div><span class="icon iconlamp" data-deviceid="vfNVnFFZX9XrAgQF"></span>Spotlight<small>SonOff</small></div>
<div><span class="icon iconlamp" data-deviceid="twYSpcyO4Z2Dt9vX"></span>Desk Lamp<small>Xiaomi</small></div>
<div><span class="icon iconboiler" data-deviceid="KSnlcaoerJkPv8xw"></span>Bojler<small>SonOff</small></div>
</div>
<div id="status"></div>Ez gyakorlatilag egy Sonoff mögötti lámpát kapcsolgat, frankón. Viszont, az API egy JSON-t ad vissza, amiben többek között benne van, hogy fel- vagy lekapcsolt állapotú-e a lámpa, ezt a GUI-n lévő ikonra is rávezetném (lekapcsolt, felkapcsolt lámpa ikon, pure css). De a $.getJSON alatt sehogysem tudom elérni a parent objektumokat, nekem igazából az AJAX fölötti, if-ben lévő $(this) kellene, de a xy.parent() se vezet eredményre, az xy.parent().parent() se működik, ezt halmozhatom akármeddig, az ajax objektumba beszorul az egész, följebb nem tudok menni.
Tehát összefoglalva... Van pár div-em (jelenleg 3 db), amikben egy-egy lámpa ikon (inline-block span) a backgroundja. A span (majd később pedig a parent div, de ez most mellékes) elemre kattintva ki/bekapcsolom a lámpát (toggle API), amire visszajön egy JSON, benne az aktuális státusz (responsejson.state = true/false). Eddig minden fasza. Viszont a true/false alapján, az adott span-nek kéne a class listáját módosítani [addClass() / removeClass()], de nincs mit, mert a span objektumra nem tudok hogy hivatkozni. a $(this).parent() nem működik, folyamatosan a getJSON objektumot kapom vissza.
Hogy tudnám ezt a problémát áthidalni?
A
$(this)a legbelső callback-ben más lesz, mivel mindenfunction(params) {// asdasd}létrehozza a saját
thiscontext-jét. A legegyszerűbb megoldás, ha agetJSONcallback-ben ehelyett arrow function callback-et használsz. -
cattus
addikt
Sziasztok,
Egy script-el oldom meg, hogy magán vagy céges mezők jelenjenek-e meg a form-ban.
Minden mező kötelezően kitöltendő.
A baj az, hogy a post nem hajtódik végre, mert az éppen nem kiválasztott oldal mezői nincsenek kitöltve.
Hogyan tudnám ezt kivédeni?
Hogyan tudom a required feltételt cserélni az inputok között, mikor éppen váltás van?
Előre is köszi
Két lehetőséged van, vagy kiveszed / berakod a DOM-ba azokat az elemeket amik az adott opcióhoz tartoznak, vagy a required attribútumát módosítod. Az utóbbi talán egyszerűbb, mivel nem kell JS-ből HTML node-okat létrehozni.
-
cattus
addikt
Sziasztok,
totálisan hozzá nem értő vagyok javascripthez sajnos, viszont van egy játék, amit kicsit modifikálni akarok egy karácsonyi ajándékhoz, viszont egy dolgot nem tudok sehogy se megoldani és ehhez szeretnék segítséget kérni. Erről a játékról lenne szó: https://jsfiddle.net/snz2adyh/ (eredeti: https://github.com/rishimadhok/Space-Shooter-Game )
Amit én szeretnék, hogy lőni ne csak a szóközzel lehessen, hanem vagy egér klikkre / érintésre vagy pedig egy külön gombbal, ami alul helyezkedne el. Az lenne a lényeg, hogy minimálisan telefonról is használható legyen, ha mozogni nem is lehet, legalább lőni lehessen. Próbálkoztam, de sajnos sehogy sem sikerült. Ha valaki tudna segíteni, annak nagyon nagyon hálás lennék. Előre is köszönöm
Hali,
Az egér klikk / érintés támogatásához ezt a két sor írd be:
var clickEvent = ('ontouchstart' in window ? 'touchend' : 'click')document.addEventListener(clickEvent, () => ship.shoot()) -
cattus
addikt
"nyers" CSS-ben írtam és írom most is a design systemet Reactos frontendre, köszi nem kérek semmilyen bullshit absztrakciós réteget, a végén úgyis ott kötnét ki hogy valamilyen random -webkit prefixes cucchoz sima csst kellene írnom. Teljesen értelmetlen a tailwind és társai, de én még a sassról is igy vélekedek. Csak lusták megtanulni az emberek a csst. Griddel 3 sor a legtöbb layout, reszponzívan.
Én pedig sokkal gyorsabban és konzisztensebben tudtam tailwind-del fejleszteni, mintha minden egyes style-t kézzel kellett volna megírnom. És ahhoz hogy a tailwind-et rendesen tudjad használni, ugyanúgy ismerni kell a CSS-t.
-
cattus
addikt
Érdekes megközelítés ez a functional programming jellegű dolog, nekem kevésbé szimpatikus, mintha az adott class/object-nek lennének a függvényei, mert így nincs convienient kódkiegészítés hozzá és vagy megtanulom mit kell importolgatni vagy a doksit kell gyakrabban forgatni. A modularizáltsága az lehet plusz, de kétlem, hogy egy dátumkezelő lib méretén múlna bármi.
(#8006) togvau
Bármit behúzhatsz jsfiddle-be. Moment.js mintaHá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
moment js-el szenvedek kicsit: a bemenő adat teljesen jó, toString()-el, ashours-al, és a többivel is azt kapom amit kéne. De ahogy a format()-ba kerül, abból már egy marhaság jön ki.
pl 5, 15, 30 percekre is egy 'H M' format stringgel mindig 0 1 jön ki. Ha a bemenő adat az null, akkor is.
Ha egy 'YYYY MM DD HH MM SS'-adok arra is ugyan ez a marhaság jön ki. Ha nem adok format stringet, akkor is.
Miért van ez? Ez feature? Vagy bug?Egyrészt ahogy martonx írta egy jsfiddle sokat segít debugolni, másrészt én moment helyett inkább a date-fns libet ajánlanám.
-
cattus
addikt
IMO a redux általában túl komplex és végtelen boilerplate, React Context API a legtöbb dologra elég, ha nem, akkor vannak lightweight megoldások, pl. a fentebb említett recoil (bár ez még experimental), vagy a zustand, easy-peasy, etc.
-
cattus
addikt
A JS/TS language service pedig beépített kell, hogy legyen a VSCode-ban. Ott tippre inkább az lehet, hogy az adott könyvtárhoz nincsenek típusdefiníciók (vagy nem raktad fel őket npm-mel).
-
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
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.A find callback-jében nem hasonlóságot vizsgálsz, hanem értéket adsz.
-
cattus
addikt
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[];}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
Sziasztok,
Ha jól tudom afor ... ofciklus abban tér el afor ... inciklikustó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
// …
}Ha jól tudom a
for ... ofciklus abban tér el afor ... inciklikustól , hogy az objektum értékein megy végig. -
cattus
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"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
Rosszul zárójelezted a kifejezésed.
-
cattus
addikt
Neked egy string kell, aminek az értéke
450px, nem pedig'450px'. A backtick-es kifejezésből automatikusan string lesz, nem kell hozzá az extra idézőjel. -
cattus
addikt
A második nem működik, ha az utolsó oldalon van és kevesebb kép maradt, mint
pictureperpage, vagy azallpicture < pictureperpageigaz. -
cattus
addikt
Igen ezzel csökken az a terület, ami undefinedet ad, de magára az ikonos részre kattintva továbbra is undefined. De ha például nem is kell majd valahol szöveg, csak az ikon a gombon?
De úgy néz ki, hogy a régi tradicionális módszer esetén nem lenne gond.
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
Sziasztok!
Ismét egy Javascript probléma. (Ezzel mindig csak probléma van, de az is lehet hogy csak velem
)Jim-Y által ajánlott querySelectoros kódból szeretnék Camera Name/Path editort.
A gombokon FontAwesome edit ikont használnék. A probléma az vele, hogyha rákattintok, akkor csak magára a gombra kattintva jelenik meg a popupban az adat, ha az ikon részre kattintok, akkor undefined-et kapok.
Az első gombnál megcsináltam, hogy a "data-...." infókat beletettem a buttonon kívül az <i> tagbe is, így:<button class="buttonact yellowbtn editbuttons" data-camNum="A" data-camId="1" data-camName="CAMERA1" data-camPath="/CM/PATH1/">
<i data-camNum="A" data-camId="1" data-camName="CAMERA1" data-camPath="/CM/PATH1/" class="fa fa-pencil-square-o" style="font-size:20px">CAM1</i>
</button>
De ezzel duplikálni kell a sorokat.(B)JSFiddle DEMO(/B)
A gomb szövegét a
</i>után rakjad. -
cattus
addikt
Biztos erre is van szebb kód, ami nem anti-pattern és 2020-ban is megállja a helyét:
Kiválasztott checkbox elemek kiíratása. A példakódban Alert-be és Console.log-ba
A kiválasztott elemeket vessző, majd szóköz választja el a megjelenített ablakban, de az utolsó elemnél is megjelenik ez a vessző és szóköz, ami nem kell. Ezt úgy oldottam meg, hogy a kapott elemlista stringből levágok két karaktert, ami a vessző és a szóköz.function printChecked(){
var items=document.getElementsByName('acs');
var selectedItems="";
for(var i=0; i<items.length; i++){
if(items[i].type=='checkbox' && items[i].checked==true)
selectedItems+=items[i].value+", ";
}
var str = selectedItems.substring(0, selectedItems.length - 2);
alert(str);
console.log(str);
}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
Ha mar megmutatjuk mi anti-pattern akkor ne mas anti-patternekkel tegyuk
Nem egy input vagy egy gomb dönti el magáról, hogy mennyi space van maga körül, mert így sosem lesz újra felhasználható a komponens. 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 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
Nem bele szeretném, hanem mellé helyezni. Az első Iframe a megjelenítési minta. Tehát az user ebből látja, hogy fog kinézni a kód eredménye, amit az inputból kimásol.
Az input azért kell, hogy a felhasználó könnyen ki tudja jelölni és másolni belőle az Iframe kódot, majd azt beilleszteni máshová, például a saját weboldalába, a megfelelő magassági értékkel együtt. Ekkor már a JavaScript-et el is hagyhatja, mivel olyan Iframe kódot másol ki, ami tartalmazza az Iframe contentjének magasságát. De ez nem is kéne, ha valahogy találnék egy lehetőséget gombnyomásra be másolni az user vágólapjára az Iframe kódot. Mivel ez a cél, hogy az user könnyedén copyzza.Vágólapra másolás: [link]
-
cattus
addikt
Hali!
Adott ez a végtelenül egyszerű kód!
Az lenne a kérdésem hogy ha a html-be a head-be rakom a .js fájl elérését akkor hibát jelez az addEventListener-nél.Gondolom gyorsabban lefut a script mithogy megtalálná a button az id szerint
.Ha a body után rakom be akkor müködik.De eddig mindig csak a headbe láttam ilyen "script-linket".Szóval hogy szokták áthídalni ezt a problémát?A html-t nem szúrom be az csak egy sima skeleton html 2 input mezővel meg egy button-el.Java-ból jövök a Js+html még elég ismeretlen terület..const button =document.getElementById('but');button.addEventListener("click",fun)function fun () {let text1=document.getElementById('text1').value;let text2=document.getElementById('text2').value;let sum=Number(text1)+Number(text2);alert(sum);};Így add hozzá a JS-t:
<script defer src="foo.js"></script>A defer-rel előbb megvárja, hogy a HTML betöltődjön, és csak azután tölti be a JS-t
-
cattus
addikt
Nem tudtok ajánlani valami jó és egyszerű Text editort?
Kb annyi és olyan elem kellene mint itt a ph-n, viszont nem bootstrap alapú, mert Angular Materialt használom
Korábban martonx ajánlotta a CkEditor-t, de kicsit overkillnek érzem ehhez a projekthez,plusz elég sokat bogarászok mire megtalálom hogy kell 1-1 beállítást megcsinálni
-
cattus
addikt
Más, nem szkripnyelvekben a const általában fordítás idejú konstanst jelöl, tehát utána a belső állapota sem változhat meg (pl. objectek esetében) az első értékadás után. Ugyanezt JS-ben az
Object.freeze()tudja elérni. -
cattus
addikt
+ egy kis Responsive ötlet is jól jönne
Szintén Angular material, + Angular Flex-Layout
Ötlet az az, hogy angularba nyitok egy dialogot a bejelentkezés és regisztrációhoz, viszont úgy szeretném megoldani a kettő közti váltást, hogy a dialogon belül 2 db gomb lenne, egymás mellett, amik egyenként elfoglalják a szélesség 50-50%-át, viszont a legkisebb állapotában minden vezérlő egymás alá kerülne
Nagyrészt ezek meg is vannak, csak az első fejtörést az okozza, hogy a dialognak kellene egyáltalán adni szélességet? mert ugye elvileg felveszi a tartalomnak a szélességét
A másik dolog, hogy ahogy összehúzom a böngészőt, a beviteli mezők szépen egymás alá kerülnek, viszont a gombok nem, ez azért lehet mert megadtam nekik, hogy 100% legyen a szélességük, ha viszont ezt kiveszem, akkor meg nem töltik ki a helyet
(beviteli mezők külön komponensben vannak, azokat alul szúrom be)<div fxLayout="column"><div fxLayout="row" fxLayoutAlign="end"><button mat-button (click)="closeDialog()">
<i class="material-icons">close</i></button></div><div fxLayout="row"><div fxFlex="100"><button mat-button (click)="isLoginActive= true"[class.btn--disable]="isLoginActive"class="full-width no-shape">Login</button><button mat-button (click)="isLoginActive= false"[class.btn--disable]="!isLoginActive"class="full-width no-shape">Registration</button>
</div></div></div><div *ngIf="isLoginActive"><app-login></app-login></div><div *ngIf="!isLoginActive"><app-registration></app-registration></div>FxLayout esetében van olyan, hogy megadod, hogy egyes méretekben hogy viselkedjen. Pl.
<div fxLayout="row" fxLayout.xs="column"></div>
esetén xs méret esetén column, felette row elrendezést használ. Így maradhat a 100% is. Van még gt-xs meg lt-xs is (meg persze a többi méretre is). -
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
Most biztosan butaságot kérdezek, de nincs véletlenü olyan JS megosztó oldal a világhálón{szándékosan nem internetet írtam}, ami többek közt magyarul szövegel ?
1. Elnavigálsz erre az oldalra: [link]
2. Beilleszted a kódot a megfelelő helyre.
3. Rányomsz a Save (Mentés) gombra.
4. Az URL-t kimásolod és beilleszted a hozzászólásodba.
5. ???
6. Profit.Angol nélkül meg
nagyon nehezenkb. sehogy sem fogsz előrébb jutni. -
cattus
addikt
Használtam én is Nest.js-t, tényleg szépen össze van rakva, kár, hogy nem használja több cég, így Nest.js gurunak lenni nem annyira kifizetődő.
Érdemes inkább ismerni az Express.jst, és alternatíváit, fastify, hapi, satöbbi.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
Sziasztok!
Egy node js-ben fejlesztett alkalmazás szeretnék írni, csakis backend részt fog tartalmazni (frontend külön projektben van). Tapasztalatból Java nyelv említhető meg, jelenlegis ez a specialitásom. Mivel a node js az új, ezért kicsit nehéz lesz az elején, de a minél több a kihívás annál jobb.
Szóval backend-re két lehetőség jön szóba: JavaScript és TypeScript. Ezeken kívül egy framework-re is szükség van, és ezt nem tudom eldönteni, hogy mi legyen. Rengeteget találtam, ajánlottak is sokat, de eddig nem sikerült döntést hozni. (ilyenekre gondolok: Grunt, Gulp, Babilon, Webpack, NestJS)
Az alkalmazás komplex lesz, tartalmazni fog jónéhány kontrollert, kapcsolódik adatbázishoz, szeretnék metrikát gyűjteni a későbbiekben illetve a logokat is tárolnám valamerre. Emiatt is nehéz kiválasztanom a megfelelő framework-öt.
TypeScript, NestJS. Az utóbbi szerintem egy elég jól összerakott framework, kicsit talán hasonlít is a SpringBoot-hoz.
-
cattus
addikt
Sziasztok,
A segítségeteket szeretném kérni abban, hogy kattintásra cserélődjön az évszám az oldal linkjenek URL-jében. Addig eljutottam, hogy minden kattintásra hozzáadja pluszba azt az évet amire kattintok de nekem arra lenne szükségem, hogy ugye cserélje csak.
Tehát esetleges folyamatos kattintások esetén is ez helyett:
rock.php/?year=2019?year=2020?year=2019?year=2020a kettő közül valamelyik legye:
rock.php/?year=2019
rock.php/?year=2020Előre is nagyon szépen köszönöm a segítséget és tanácsokat ha esetleg túlbonyolítottam.

<div id="box"><p align="center" class="title">DATE <span id="2019" class="clicks" style="color: #e2007a;">2019</span> - <span id="2020" class="clicks" style="color: #8a8a8a;">2020</p></p><a href="rock.php">LINK</p><a href="rock2.php">LINK</p><a href="rock3.php">LINK</p></div><script type="text/javascript">var links = document.getElementsByTagName('a');function toggleBold(el) {var siblings = document.getElementsByClassName('clicks');for (var i = 0, len = siblings.length; i<len; i++){if (siblings[i] == el){el.style.color = el.style.color = '#e2007a';var year = siblings[i].id;for(var i = 0; i< links.length; i++){links[i].href = links[i].href + "?year=" + year;}}else {siblings[i].style.color = '#8a8a8a';}}}var paragraphs = document.getElementsByClassName('clicks');for (var i = 0, len = paragraphs.length; i<len; i++){paragraphs[i].onclick = function(){toggleBold(this);};}</script>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
Sziasztok, elkezdenék JS-ezni, de rájöttem, hogy a frontend annyira nem érdekel kifejezetten. Backend viszont igen és ha azt mondom devops, az 'ops' része meg is volna, a dev hiányzik.
Nagyon ördögtől való Node.JS-el indítani úgy az egész JS 'karriert' ? + SQL/NoSQL, REST API fejlesztgetés, szóval alulról építkeznék felfele és a végén tanulnék frontend-et, hátha addigra megjön a kedvem hozzá. Na meg van egy Raspberry Pi-m is, elkezdeném használni erre-arra (GPIO), kisebb érdekes hobbi projektekhez. 
Szerintem egyáltalán nem az, vannak rendes frameworkök, mint Express, Feathers meg NestJS.
-
cattus
addikt
Sziasztok ismét!
Tehát, a zenék már mennek, de az az egyetlen bajom ezekkel, hogy a hatterzene.mp3 csak egyszer játszódik le, márpedig ismétlődnie kellene, mivel a játékprogram háttérzenéjéről van szó.
Így kódoltam, de nem működik:
hatterzene = new sound("zenek/hatterzene.mp3");
hatterzene.loop = true;
Hogyan lehetne ezt a problémát megoldani?U.I.: a 7525. hozzászólásban van a kódom a zenék inicializálásáról.
Első tippre ne létrehozás után állítsd be, hogy loopoljon, hanem a sound függvényben.
-
cattus
addikt
Pszeudokódosan írtam, hogy könyebb legyen áttekinteni . Ebből van még 6x verzió, meg egy hetedik másjellegű hosszú ciklus-rendszer, de egészen hasonló gyorsítókkal . Nem szokásom a rövid funkciók gyártása, olyanra veszem amilyenre kedvem tartja . Emlékeztetőleg, ez nem az elsőnek beharangozott 150 oldalas script-ből van hanem a második 60 oldalas script-ből van :
Hogy tetszik?
H
For
For
// ide nem megy hasonló gyorsító, mert feladata a lista végigvétele
For
For
IfFor
IF InStr(*,k) != 0 // ez működik gyorsítóként, mert csak a helyes string találatokat engedi át, a többit visszatartja
For
For
IF k = g
// fő utasítások
End IF
// fő utasítások
End For
End For
End IF
End ForElse
For
IF InStr(*,k) != 0 // ez működik gyorsítóként, mert csak a helyes string találatokat engedi át, a többit visszatartja
For
For
IF k = g
// fő utasítások
End IF
// fő utasítások
End For
End For
End IF
End ForEnd IF
End For
End For
End For
End ForElképesztő. Elágazást használtál egy programban. Meghajlok kódoló tudásod előtt.
-
cattus
addikt
-
cattus
addikt
Te mixelni szeretnéd a JavaScriptet meg a PHP-t, ami nem fog működni. Ahogy fentebb is írták, nézz utána, hogy működik a localStorage és csináld meg azzal, ne fájlműveletekkel.
-
cattus
addikt
-
cattus
addikt
Sziasztok!
Két különböző értéket szeretnék kicserélni de csak az egyiket cseréli. Tudtok segíteni?x.textContent.replace("Ft", "")
x.textContent.replace(",", ".")x.textContent = x.textContent.replace("Ft", "");x.textContent = x.textContent.replace(",", "."); -
cattus
addikt
Most ez a porszem zavarja a tisztánlátásomat . Sok redukció után tudtam csak enyire leegyszerűsíteni ezt a zavaró kódproblémámat :
var xa01 = [ , ] , xe = [ ] ;// xa01[0] = xe ; xa01[1] = xe ;// xa01[0] = [ ] ; xa01[1] = [ ] ;// alert(xa01[0][0 ] +'\n'+ xa01[1][0] ) ;xa01[0][0] = 7 ; xa01[1][0] = 8 ;alert(xa01[0][0 ] +'\n'+ xa01[1][0] ) ;xa01[0][0] = 9 ;alert(xa01[0][0 ] +'\n'+ xa01[1][0] ) ;
Ha azxa01[0] = [ ] ; xa01[1] = [ ] ;-vel eresztem, akkor rendesen megy, az xa01[0][0] és xa01[1][0] különböző értékűek . Ha viszont azxa01[0] = xe ; xa01[1] = xe ;-vel eresztem, akkor rosszul megy, az xa01[0][0] és xa01[1][0] egyforma értékűek .
Miért van ez a másság ?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
A megadott kódod megy nekem, de változóval kellene . Próbáltam mindenféleképen változót belecsempészni, még eval()-lal is, da ha megy akkor 2 - 5 db vonást ad vissza .
var a1 = '||'; a2 = '\|\|'; a3 = '|';
isvar a1 = '\|\|'; a2 = '\|\|'; a3 = '\|';alert(a1.replace(/a2/g,a3)) ;
Hogyan kell változót csempészni oda ?Ne string-be mentsd el a regexet, hanem regexként, így:
a2 = /\|\|/gm -
cattus
addikt
Van nektek egy igazi fejtörőm :
var a1 = 'aa'; a2 = 'aa'; a3 = 'a';alert(a1.replace(new RegExp(a2,'g'),a3)) ;var a1 = '||'; a2 = '||'; a3 = '|';alert(a1.replace(new RegExp(a2,'g'),a3)) ;
Az első alert() szépen megy, és 1 db 'a' stringet ad vissza, de a második alert() nem így csinál, mert 5 db-os '|||||' ad vissza . Nyilván azért mert regionális jel részeként értelmezi . Hogyan kellene átírni ezt a **.replacet(), hogy ne regionális karrakterként értelmezze a '||' stringet és 1db '|' stringet adjon vissza, de a g kapcsoló is feltétlenül kell, a változók is kellenek-maradjanak, mert egy meglehetősen nagyméretű funkció monolit kicsi részei, megkeserítve az életemet ? Már ezt a hibát megtalálni benne is nehéz volt . A JS-nek elég bonyolult a regionális karakterezés módszere, hátha van valami kiskapu rá ? Vagy esetleg csak a böngészőm a régi ?myStringVariable.replace(/\|\|/gm, '|')Eza változóban kicseréli az összes '||' karaktert '|' karakterre. -
cattus
addikt
Sztorno az előző, azt hittem valamiért, hogy php topicban vagyok (meg a kérdést is egy kicsit félreértettem)

Szóval Javascriptben csak az objektumok kerülnek át referencia szerint, egyszerű típust nem lehet úgy átadni.
Kb így lehet megkerülni:
var e4 = {Value: 0};
function alma(a1,b2,c3){
b2.Value = 456;
return 123;
};
alma(4,e4,8);
alert(e4.Value);Ha a függvényen kívül definiálod a változót (ahogy az eredeti korban is volt), akkor még ez sem kell, simán meg tudod változtatni a függvények belül (még paraméterként se kell átadni).
Új hozzászólás Aktív témák
-
Fórumok
Mobilarena - 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 Nyomtatók, szkennerek Tabletek, E-bookok 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ésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁ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
- Fejhallgató erősítő és DAC topik
- BMW topik
- Autós topik
- djculture: Az elvileg már senkinek nem kellő HDD-k ára is egekbe emelkedett 4 hónap alatt
- Eredeti játékok OFF topik
- Intel Dual Core 2000 felhasználók barátságos offolós topikja
- Samsung Galaxy A52s 5G - jó S-tehetség
- Honor 600 – kezes, kitartó, költséges
- Futárcégek
- Genshin Impact (PC, PS4, Android, iOS)
- További aktív témák...
- DDR4 memóriák eladóak
- Hihetetlen Gaming PC brutális specifikációkkal! A dán Topdata.dk IT-cég által összerakva
- 2.5" 100% noti HDD-k Western Digital, Seagate 320Gb (3k) +1Tb (15k) van 1db SSHD is (15k)
- Lenovo P16s gen2 16" //Core i7 1360P // Nvidia RTX A500 4GB GDDR6 // 16Gb /512GB SSD/ gyári garancia
- Micron és Samsung 32GB ram 1 x 32GB 3200Mhz vagy 2 x 16GB 2666Mhz - több db elérhető
- Bomba ár! HP EliteBook 845 G9 - Ryzen 5 6650U I 16GB I 512SSD I 14,1" FHD+ I Cam I W11 I Gari!
- ÚJ!!! Starlight MacBook Air 15" M4 24GB 1000GB Garanciával, ajándék töltővel
- AMD GAMER PC! Ryzen 5800X / RX 6900 XT / 32GB 3600MHz/ 1TB NVMe / 850w Gold! BeszámítOK
- Használt számítógépek/merevlemezek számlával, garanciával! Ingyen Foxpost/PostaPont!
- Konzol felvásárlás!! Xbox Series S, Xbox Serries X
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest










