JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Gyorskeresés
Legfrissebb anyagok
Általános témák
LOGOUT.hu témák
- [Re:] Elektromos rásegítésű kerékpárok
- [Re:] [D1Rect:] Nagy "hülyétkapokazapróktól" topik
- [Re:] [Divinity:] Google Pay használata Magyarországon
- [Re:] [Luck Dragon:] Asszociációs játék. :)
- [Re:] [gban:] Ingyen kellene, de tegnapra
- [Re:] eBay-es kütyük kis pénzért
- [Re:] [Lalikiraly:] MSI notebook kijelző. A bolt szerint ez természetes.
- [Re:] [attilasd:] A laposföld elmebaj: Vissza a jövőbe!
- [Re:] [sziku69:] Szólánc.
- [Re:] [sziku69:] Fűzzük össze a szavakat :)
Szakmai témák
PROHARDVER! témák
Mobilarena témák
IT café témák
Téma összefoglaló
Hozzászólások
joysefke
veterán
Köszi a választ!
Ja és a pastebin-es kódban a jquery-t meg hasonlókat korábban húzd be, mint a saját kódod.
Persze, próbáltam úgyis (sőt most már úgy van), de úgy sem ment.
Nem kell semmit szerializálni, nem is tudom ezt honnan vetted.
A te megoldásodban -amennyire ezt olvasni tudom- ha a user megváltoztja a form-ot, majd visszaváltoztja az eredeti állapotára, a disabled attribútum már nem fog visszakerülni ugye?
Pont erre lenne a szerializálás, hogy elments a form eredeti, oldalbetöltés utáni állapotát és azzal tudd összehasonlítani az aktuális állapotot.
Ma este még kipróbálom amit küldtél...
[ Szerkesztve ]
bandi0000
nagyúr
nem ezt keresed? oninput="myFunction()" ha változik a tartalma a mezőnek a user által, akkor csinál valamit, pl bekapcsolja a gombot
Xbox One: bandymnc
joysefke
veterán
megvan!!!!
<script>
var $origForm;
var $newForm;
$(document).ready(function () {
$origForm = $("#rsvpForm").serialize();
});
$(document).ready(function () {
$('#rsvpForm :input').on("change input", function () {
$newForm = $("#rsvpForm").serialize();
if ($newForm === $origForm) {
$("#rsvpSubmit").prop('disabled', true);
}
else {
$("#rsvpSubmit").prop('disabled', false);
}
});
});
</script>
Na még nem teszteltem rendesen ki, de úgy tűnik azt csinálja ami nekem kell:
betöltés után eltárolja a form állapotát szerializálva, ezután minden változás után automatikusan újraszerializála és ellenőrzi hogy megegyezik-e az új állapot a kezdőállapottal. Ha igen akkor a gombot letíltja, ha nem, akkor a gombot engedélyezi...
[ Szerkesztve ]
DopeBob
addikt
Sziasztok,
ismerkedünk csak egy JS-el, egy udemy-s oktatáson vagyok túl. Most gyártom az első saját projektet, a logikai rész az ok, de az UI-val most elakadtam.
Röviden: egy szótanuló program, szépen szétszedve 3 kontrollerre (adatok, ui, logika). Eddig js alert-al írta ki, hogy jó e a szó vagy nem. Ezt most lecseréltem egy html kódra (Bootsrap alert). Megjelenik a szöveggel, egy ok gomb van rajta, amit megnyomva eltűnik.
a controller osztályban van egy checkWord metódus, és az meghívja ezt jó vagy rossz válasz esetén is. Amíg egy alert
írta ki ezt, nem volt gond, mert megakadt a végrehajtás, ok gomb megnyomásáig, itt viszont kéri a következő szót.
Valami olyasmi kéne, hogy amikor ez info sáv "Ok" gombját megnyomom, akkor eltűnik + plusz ilyenkor ad vissza valami értéket, és a controller osztály addig itt várakozik.
Milyen résznek nézzek utána?
MZ/X
martonx
veterán
Bootstrapnek
Én kérek elnézést!
DopeBob
addikt
Na jovan, megyek elasom magam. Van egy esemeny amire fel lehet iratkozni, igy konnyu Atazerveztem kicsit a kodot, ugy oldottam meg vegul csak most neztem meg ujra a bs alertet
MZ/X
Con Troll
senior tag
Sziasztok,
kellett írnom egy parancssorból futtatható JS programot, amit majd Linuxon használnak. A programnak van néhány függősége, pl. puppeteer. Ha én windowson írtam a programot, és a node_modules mappával együtt küldöm el az illetőnek, akkor ő azt tudja majd használni egyből, vagy Linuxon is kellene telepítgetnie?
Lehet, hogy banális a kérdés, de még sosem fejlesztettem linuxon és nincs linuxos gépem sem, így nem tudom kipróbálni, hogy működik-e.
Köszönöm!
martonx
veterán
node_modules-al ne küldd szvsz nodejs (npm) így is úgy is kelleni fog Linuxra is, de ezeket bagatell telepíteni, utána már mehet egy npm install és voilá.
Win - Linux között ami inkább gondot szokott okozni, az az útvonalak eltérősége, case insensitive vs sensitive és ilyesmi eltérések.
Én kérek elnézést!
sztanozs
veterán
Egy linux live usb drive-val kipróbálod pl...?
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
Aureal
senior tag
Üdv!
Van egy ciklusos scriptem, aminek a lefutása alatt szeretném kiíratni, hogy "dolgozom az eredményen...", ami a végén felülíródna az eredményekkel.
A ciklust egy gomb lenyomása indítja, ahogyan a fenti üzenet kiíratását is (2 függvény indítás onclick eseményre), de nem jelenik meg csak mikot lefut a ciklusos függvény is és nem értem miért, hisz az infót kiíratót teszem előre? Hogyan lehetne ezt megoldani?
<button onclick="work(), gen()">ok</button>
<p id="res"></p>
<script>
function work() {
document.getElementById("res").innerHTML = 'dolgozok az eredményeken...';
}
[ Szerkesztve ]
Doink
aktív tag
Mert a gen() függvényed és a work() is blokkoló.
Ha beteszed a work() öt egy setTimeoutba akkor menni fog. Természetesen nem ez a szép megoldás de nézd át hogy a javascript hogy működik, 1 szál, eventloop stb.
[ Szerkesztve ]
Doink
aktív tag
Akarom mondani a gen()-t, nem a work-öt.
Aureal
senior tag
Ezeket még nem értem amit írsz.
Doink
aktív tag
Példa, ez mind blokkoló másold be az F12 console-ba és nyomj entert:
document.body.innerHTML = "Ezt se látod";
alert("ugye?");
document.body.innerHTML = "Meg ezt se látod";
alert("ugyehogyugye?");
document.body.innerHTML = "Na ezt látod";
alert("Na majd most fogja újrarajzolni az oldalt a böngésző mert előtte minden blokkoló");
Aureal
senior tag
Operat használok, abban nem történik semmi f12-re.
Amúgy ezen példákból se derül ki számomra mi a lényege ennek az egésznek. Ua eljárás csak a szöveg más és 1x menne azt mondod, 2x meg nem. Lövésem sincs hogy jön ez összefüggésbe a button onclickkel.
[ Szerkesztve ]
martonx
veterán
Azt az egy sort tedd be a gen-be
Én kérek elnézést!
Doink
aktív tag
Az összefüggés ott van hogy a 2 függvényed blokkoló az onclickben, vagyis a böngésző addig nem rajzolja újra az oldalt amíg nem végzett mind2vel. (addig befagy a böngésző mivel 1 szál van)
Az én példámban is csak az utolsó alert() OK után fogja újrarajzolni neked.
Ennek az oka az event-loop modell, ami akkor kurva jó ha sok apró dolgot csinálsz async (jellemzően webes felületeken ez történik).
Operaban ctrl+shift+I
[ Szerkesztve ]
Aureal
senior tag
Melyiket?
cattus
őstag
Ami a work()-ben van.
Do the thing!
Aureal
senior tag
Na így részletezve már felfogtam, köszi!
Ami viszont még nem világos: a setTimeout-nak akkor az volna eleve a gyakorlati haszna a js kódolásban, hogy egy processzra meddig várjon, s utána menjen a következőre?
Aureal
senior tag
Akkor hozzáírná az eredményt az információhoz, nem felülírná!
De mutatom akkor itt az egészet: [link]
[ Szerkesztve ]
cattus
őstag
Megoldottam Promise-t használva (sejtésemre máshogy nagyon nem is lehet), itt a kód. Raktam bele egy kis késleltetést (setTimeout), hogy látszódjon a folyamat, mert anélkül instant lefut az egész.
Visszatérve az eredeti problémára és kódra: azért nem írta ki, hogy "dolgozom az eredményen...", mert a UI mindaddig nem frissül, amíg mindkét függvény futása nem ért véget teljesen.
Do the thing!
Aureal
senior tag
Ok, csak ezzel bejön nekem egy rakat ismeretlen fogalom meg tömb kezelés amellé, amin a saját kódomban is alig tudok még úrrá lenni, tehát szép meg jó hogy te ezt tudod, én meg lesek rá mint hal a szatyorra...
Zedz
addikt
Ebben a szakmában holtig tanul az ember, cinizmus nélkül tényleg a Google a legjobb társad ilyenkor.
cattus
őstag
Akit esetleg érdekel, megcsináltam async-await használatával, ezzel kicsit tisztább a szintaxis.
(#7124) Aureal:
Az a helyzet, hogy amit szeretnél (frissíteni a UI-t, miközben a háttérben dolgozol), kb. minden nyelvben hasonlóval lehet megoldani (vagy használsz valamilyen framework-öt, de az ebben az esetben atomrakétával a verébre esete). Ha a tömbök kezelése se teljesen tiszta számodra, akkor azt ajánlanám, hogy első körben az alapoknak nézz utána.
A fentebb linkelt indiai YT videó helyett inkább ajánlom a Lynda és Pluralsight viedósorozatait, én sok dolgot onnan tanultam meg.
Do the thing!
Aureal
senior tag
Igen, ebben a fázisban vagyok, csak nagyon az elején, viszont anno a google hozta ezt a topikot is.
De amúgy ez amolyan ½hobbi csak nekem. Rég rájöttem hogy nem leszek én programozó, de a szükség meg néha hoz megoldandó dolgokat, amihez némi alap scriptelés nem árt...
Amúgy az önképzési szisztematika szintjén nagyon érdekelne, hogy milyen lépcsőfokokon, napi mennyi gyakorlással és mennyi összidő alatt lehet egy átlagos amatőr szintig legalább eljutni?
Vettem én anno C, meg C++ könyveket is régen, mikor még azt sem tudtam milyen nyelvvel kéne kezdeni, de valahogy az eleje a legrázósabb ennek úgy érzem, még az ember nem látja a fától az erdőt.
[ Szerkesztve ]
Aureal
senior tag
Jók a tutorial videók persze, csak ahhoz beszéd szinten is kéne érteni angolul. Lefordítgatok én írott anyagot, de annak idején nekem még orosz volt kötelező.
RedHarlow
aktív tag
Sziasztok, hogy tudnék beazonosítani egy iframe-et javascriptben úgy hogy csak a title értékét tudom és annak is csak az első felét? A lényeg az, hogy az oldalon 3 iframe dolgozik, minden betöltésnél egyedi ID-t kapnak, nekem az egyik iframe-ben kellene megkeresnem egy táblát de ahoz hogy ki tudjam nyerni a tábla adatait be kell ugye azonosítanom előtte az iframe-et ami pedig csak a title alapján sikerülhet.
Az alábbi kódot szeretném kiegészíteni hogy működjön.
var iframe_random_number = document.querySelector('[title="change"]');
var elmnt = document.getElementById('iframe_random_number').contentWindow.document.getElementById('table').value;
alert (elmnt);
[ Szerkesztve ]
RedHarlow
aktív tag
megoldás:
var matches = document.querySelector('[title^="Valami kezdete "]')
Doink
aktív tag
Azért írd bele hogy iframe:
document.querySelector('iframe[title^="Valami kezdete"]')
K1nG HuNp
őstag
Hali, van valami tippetek vanilla JS projekthez? Egyetem mellett, hobbiként tolom egyelőre és kellene egy nagyobb lélegzetvételű alkalmazást csinálnom amihez használnom kellene a mélyebb dolgait a nyelvnek. Az a baj hogy mindig ott kötök ki, hogy html-t és css-t b*szogatok órákig a JS meg 250 sor az egész projektben Nem akarok keretrendszerekbe se bújni, szívesebben jutnék el a nehezebb úton azokhoz a problémáhkoz amelyekért létrejöttek az adott frameworkok.
[ Szerkesztve ]
(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()
Zedz
addikt
DOM manipulalas helyett irj benne egy chatbotot.
[ Szerkesztve ]
K1nG HuNp
őstag
Beszéltem felsőbbéves szobatársammal és azt ajánlotta, hogy feleslegesen ne vessem bele magam még a neurális hálókba, ugyis majd kesobb lesz egyetemen, de egy statikus, gyurcsányferis facebookos chatbotot lehet összedobok Talán valami olyasmit amitől megkérdezheted hogy mikor lesz a kövi zh, belinkel neked targyhonlapokat stb.
Könyvek terén Eloquent JavaScript vagy Secrets of The JavaScript jobb? Vagy barmi mas 3. opcio is johet. Valami olyasmi kellene ami a nyelvet mutatja be, nem feltetlen a programozast meg azt hogy mi egy valtozo.
(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()
Zedz
addikt
cattus
őstag
Felejtsd el a könyveket és menj fel pluralsight-ra vagy lynda-ra és nézz videókat / csináld párhuzamosan a példákat.
Do the thing!
K1nG HuNp
őstag
Biztos? Mindig is óckodtam a netes tanulástól mert valahogy amiket eddig láttam mind ilyen random felszínes fisfos volt, ez a codecool szint. De lehet csak az eddigi példák voltak gagyik.. Ránézek, köszi az inputot
(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()
K1nG HuNp
őstag
Még kicsit a DOM-nál maradva: egész sokat foglalkozok animációkkal és kellene egy sajat framework, mert hogy netem nem talaltam ami megkönnyíti a dolgom.
Az animacioim amiket hasznalok mindig a CSS-ben vannak, megirom a @keyframest aztan egy classt ami tartalmazza az adott animaciot idovel stb.
Pelda:.enter {
animation: enter 10s ease;
}
@keyframes enter {
0% {
transform: scale(.1);
}
100% {
transform: scale(1);
}
}
Ezt a classt csak hozzacsapom ahhoz a dom elementhez amit animalni szeretnek es kesz.
Erre irtam egy nagyon egyszeru fuggvenyt:function classAnimator(dom,className) {
dom.classList.add(className);
dom.addEventListener("animationend", clearIt);
function clearIt(){
dom.classList.remove(className);
dom.removeEventListener("animationend", clearIt);
}
}
Amit igy hivok meg:const button = document.getElementById("testButton");
const box = document.getElementById("box");
button.addEventListener("click", ()=>{classAnimator(box, "enter")})
Köv lépésben azt szeretném megcsinálni, hogy a button
-ról leveszem a click
event listenert, tehat amig tart az animacio ne erdekelje, hogy nyomkodjak.
De elakadtam.
Van egy csunya megoldas amiben egy glob valtozoban kellene tarlonom, hogy "clicked"-e a button
es ha igen akkor instant returnol a classAnimator
. De ja ez csúnya.
Próbáltam még klónozni az event.target-et ami ugye a button
jelen esetben, ez patentül működött is mert leszedte az eventListenert (bar az osszes gyerekerol leszedne de most ez még nem zavar), de utána nem tudtam értelmesen visszatenni rá mert valami para volt a masodik lefutastol a "parentNode"-valvar clone = event.target.cloneNode(true);
event.target.parentNode.replaceChild(clone, event.target);
Ti hogyan oldanátok meg a problémát?
Tehat az a vegso cel, hogy egy gomb, kep, barmi eventlistenerbe belerakom a fuggvenyem, megadom neki mit animaljon, megcsinalja az animaciot, utana leszedi az animacio class-t, es az egesz kozben blokkolja az ujabb eventeket a gomb/kep/barmi -rol.
[ Szerkesztve ]
(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()
laracroft
aktív tag
Sziasztok
Valamit elrontok és nem tudom mit
Van egy php/MySQL lekérdezésem.
Azt szeretném elérni, hogy keresés közben a Keresés gombom ne legyen elérhető (ne nyomogassa többször a user).
Amint vége a keresésnek a gomb legyen újra aktív.
Találtam megoldásokat, de egyiket sem tudtam beállítani.
Ez talán a leginkább szimpatikus nekem:
$(function()
{
$('#keres_btn').on('click',function()
{
$(this).val('Keresés alatt ...')
.attr('disabled','disabled');
$('#keres_form').submit();
});
});
A bajom az, hogy amint beállítom, nem fut le a query. Látom, hogy a gombon van változás, de a keresés nem fut le, nem lesz semmilyen eredménye.
Mit rontok el?
Előre is köszi
Doink
aktív tag
<!DOCTYPE html>
<html>
<body>
<button id="btn">Click me</button>
<script>
const btn = $("#btn");
btn.on("click", () => {
btn.attr("disabled", "disabled");
$.get("/egy-szep-url")
.then((response) => {
// 200 OK jött vissza
}).catch((error) => {
alert(error);
}).always(() => {
alert("Most fog lejönni a disabled");
btn.removeAttr("disabled");
});
});
</script>
</body>
</html>
[ Szerkesztve ]
martonx
veterán
Azt rontod el, hogy 2019-ben jquery-t használsz
Én kérek elnézést!
laracroft
aktív tag
Köszi 😉
RedHarlow
aktív tag
Sziasztok!
Van egy ilyen scriptem, ami egy tábla adatait szépen leszedi, tök jól működik jelenleg, de nekem csak a sor 2. cellájának és a 4. (egyben utolsó) cellájának adataira lenne szükségem. Tudna segíteni valaki ezt megoldani?
var oTable = document.getElementById('table');
var rowLength = oTable.rows.length;
for (i = 4; i < rowLength -1; i++) {
var oCells = oTable.rows.item(i).cells;
var cellLength = oCells.length;
for(var j = 1; j < cellLength; j++) {
var cellVal = oCells.item(j).innerHTML;
console(cellVal);
}
}
[ Módosította: mobal ]
bandi0000
nagyúr
Első for direkt megy 4-ről?
Mert ugye mivel 0-ról indexelődik így írhatsz egy feltételt, hogy
rowLength[i]%2!=0 // tehát csak a 1.és 3. indexű sort nézi ami a te esetedben a 2. és 4.
[ Szerkesztve ]
Xbox One: bandymnc
sztanozs
veterán
rowLength[i%2]!=0
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
sztanozs
veterán
de inkább célszerű helyesen indexelni és rögtön a másodiktól kezdeni:for(var j = 1; j < cellLength; j+=2) {
Mondjuk a ciklusban simán felülírod a második értékkel az elsőt.
Inkább így kellene:cx = 0
for(var j = 0; j < cellLength; j+=2){
var cellVal[cx] = oCells.item(j).innerHTML;
console(cellVal[cx]);
cx++;
}
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
#57018880
törölt tag
Nem írtad mire használod, de talán így is működhet. Ha későbbi interakcióra kell, vagy frissíted, akkor, egyben azt is megfoghatod.
var c2Data = [...document.querySelectorAll('tr td:nth-child(2)')];
c2Data.forEach((v)=>{
console.log(v.textContent);
});
Lokids
addikt
Sziasztok!
Az alábbi kódban kérnék segítséget. Lefut, de minden zöld, dátumtól függetlenül:function colorCodeRows() {
SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
OnPostRender: function (ctx) {
// get today's date
var today = new Date();
// zero out the time portion so we will only compare days
today.setHours(0,0,0,0);
var rows = ctx.ListData.Row;
for (var i = 0; i < rows.length; i++) {
// get the date set in your date YourDateField
var itemDate = new Date(rows[i]["Határidő"]);
// zero out the time portion so we only compare days
itemDate.setHours(0,0,0,0);
var rowId = GenerateIIDForListItem(ctx, rows[i]);
var row = document.getElementById(rowId);
if (itemDate > today) {
row.style.backgroundColor = '#00FF00';
} else if (itemDate = today) {
row.style.backgroundColor = '#FFFF00';
} else if (itemDate < today) {
row.style.backgroundColor = '#FF0000';
}
}
}
});
}
RegisterModuleInit(SPClientTemplates.Utility.ReplaceUrlTokens('~site/SiteAssets/JSLink/coloring.js'), colorCodeRows);
colorCodeRows();
Nem tudom mit nézek be, mert elvileg teljesül a többi feltétel, de a notepad nem tud lépésenkénti futtatást.
[ Szerkesztve ]
If you chase two rabbits you will lose them both.
dqdb
nagyúr
itemDate = today
ez biztosan rossz, mert így értékadás is
[ Szerkesztve ]
tAm6DAHNIbRMzSEARWxtZW50ZW0gdmFka5RydIJ6bmkuDQoNClOBc4Ek