Hirdetés

2024. június 23., vasárnap

Gyorskeresés

Téma összefoglaló

Téma összefoglaló

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

LOGOUT.hu

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

Összefoglaló kinyitása ▼

Hozzászólások

(#7101) joysefke válasza cattus (#7100) üzenetére


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 ]

(#7102) bandi0000 válasza joysefke (#7101) üzenetére


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

(#7103) joysefke


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 ]

(#7104) DopeBob


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

(#7105) martonx válasza DopeBob (#7104) üzenetére


martonx
veterán

Bootstrapnek

Én kérek elnézést!

(#7106) DopeBob válasza martonx (#7105) üzenetére


DopeBob
addikt

:W

Na jovan, megyek elasom magam. Van egy esemeny amire fel lehet iratkozni, igy konnyu :DD Atazerveztem kicsit a kodot, ugy oldottam meg vegul csak most neztem meg ujra a bs alertet

MZ/X

(#7108) Con Troll


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!

(#7109) martonx válasza Con Troll (#7108) üzenetére


martonx
veterán

node_modules-al ne küldd :D 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!

(#7110) sztanozs válasza Con Troll (#7108) üzenetére


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...

(#7111) Aureal


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...';
}

:R

[ Szerkesztve ]

(#7112) Doink válasza Aureal (#7111) üzenetére


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 ]

(#7113) Doink válasza Doink (#7112) üzenetére


Doink
aktív tag

Akarom mondani a gen()-t, nem a work-öt.

(#7114) Aureal válasza Doink (#7112) üzenetére


Aureal
senior tag

Ezeket még nem értem amit írsz.

(#7115) Doink válasza Aureal (#7114) üzenetére


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ó");

(#7116) Aureal válasza Doink (#7115) üzenetére


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. :F

[ Szerkesztve ]

(#7117) martonx válasza Aureal (#7111) üzenetére


martonx
veterán

Azt az egy sort tedd be a gen-be :D

Én kérek elnézést!

(#7118) Doink válasza Aureal (#7116) üzenetére


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 ]

(#7119) Aureal válasza martonx (#7117) üzenetére


Aureal
senior tag

Melyiket?

(#7120) cattus válasza Aureal (#7119) üzenetére


cattus
őstag

Ami a work()-ben van. :U

Do the thing!

(#7121) Aureal válasza Doink (#7118) üzenetére


Aureal
senior tag

Na így részletezve már felfogtam, köszi! :R
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?

(#7122) Aureal válasza cattus (#7120) üzeneté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 ]

(#7123) cattus válasza Aureal (#7122) üzenetére


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!

(#7124) Aureal válasza cattus (#7123) üzenetére


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... :)

(#7125) Zedz válasza Aureal (#7124) üzenetére


Zedz
addikt

Ebben a szakmában holtig tanul az ember, cinizmus nélkül tényleg a Google a legjobb társad ilyenkor.

(#7126) cattus válasza cattus (#7123) üzenetére


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!

(#7127) Aureal válasza Zedz (#7125) üzenetére


Aureal
senior tag

Igen, ebben a fázisban vagyok, csak nagyon az elején, viszont anno a google hozta ezt a topikot is. :K
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 ]

(#7128) Aureal válasza cattus (#7126) üzenetére


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ő. :DDD

(#7129) RedHarlow


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 ]

(#7130) RedHarlow válasza RedHarlow (#7129) üzenetére


RedHarlow
aktív tag

megoldás:

var matches = document.querySelector('[title^="Valami kezdete "]')

(#7131) Doink válasza RedHarlow (#7130) üzenetére


Doink
aktív tag

Azért írd bele hogy iframe:

document.querySelector('iframe[title^="Valami kezdete"]')

(#7132) K1nG HuNp


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 :B 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()

(#7133) Zedz válasza K1nG HuNp (#7132) üzenetére


Zedz
addikt

DOM manipulalas helyett irj benne egy chatbotot. :D

[ Szerkesztve ]

(#7134) K1nG HuNp válasza Zedz (#7133) üzenetére


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 :DD 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()

(#7135) Zedz válasza K1nG HuNp (#7134) üzenetére


Zedz
addikt

(#7136) cattus válasza K1nG HuNp (#7134) üzenetére


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!

(#7137) K1nG HuNp válasza cattus (#7136) üzenetére


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 :D

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

(#7138) K1nG HuNp


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"-val
var 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()

(#7139) laracroft


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 ;)

(#7140) Doink válasza laracroft (#7139) üzenetére


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 ]

(#7141) martonx válasza laracroft (#7139) üzenetére


martonx
veterán

Azt rontod el, hogy 2019-ben jquery-t használsz :D

Én kérek elnézést!

(#7142) laracroft válasza Doink (#7140) üzenetére


laracroft
aktív tag

Köszi 😉

(#7143) RedHarlow


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 ]

(#7144) bandi0000 válasza RedHarlow (#7143) üzenetére


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

(#7145) sztanozs válasza bandi0000 (#7144) üzenetére


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...

(#7146) sztanozs válasza sztanozs (#7145) üzenetére


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...

(#7147) #57018880 válasza RedHarlow (#7143) üzenetére


#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);
});

(#7148) Lokids


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.

(#7149) dqdb válasza Lokids (#7148) üzenetére


dqdb
nagyúr

itemDate = today

ez biztosan rossz, mert így értékadás is

[ Szerkesztve ]

tAm6DAHNIbRMzSEARWxtZW50ZW0gdmFka5RydIJ6bmkuDQoNClOBc4Ek

(#7150) Lokids válasza dqdb (#7149) üzenetére


Lokids
addikt

átírtam itemDate == today és minden sárga lett :D

If you chase two rabbits you will lose them both.

Copyright © 2000-2024 PROHARDVER Informatikai Kft.