-
Fórumok
LOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás 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ésFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
-
Frissítve: 2014-02-25 10:20 Téma összefoglaló
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
cattus
addikt
-
martonx
veterán
-
martonx
veterán
-
Dinter
addikt
Végül a Katalon Recorder (Selenium IDE) lett a megoldás. Igen, kellett kicsit szenvedni vele, hogy változnak a gombok nevei, de végül sikerült. A csv-t pedig fel lehet tölteni egy "Data driven" fülön belül, onnan berakosgatja.
Egyetlen probléma, hogy kicsit lassabb, mert max sebességen nem tudom futtatni, mert ugye mentés után kell egy 0.5s meg amíg a mentés gomb kattinthatóvá válik, így kb 10 mp felvinni 1-et.
-
Doink
aktív tag
-
martonx
veterán
"A rendező kód akor futna le, amikor az összes kép betöltődött, ezáltal tudjuk már a dimenzióit."
Ezen elgondolkoztam, hogy biztos ez a jó megoldás? Miért nem küldöd ki első körben a képek dimenzióit, url-jét, majd azt beillesztve a megfelelő helyekre, szépen lejönnének a képek, mindegyik pont a helyére. -
Jim-Y
veterán
Szia, kevéssé világos ennyiből, hogy pontosan mit szeretnél elérni, de használhatsz egy modulra/függvényre globális jelölőt (flaget) amit akkor billentesz át, ha minden betöltődött.
Egy másik megközelítés, vagy a fenti megközelítés kiterjesztése, ha reaktívan gondolkozol. Ez nagyjából azt jelentené, hogy akik/amik érdekeltek az összes kép betöltődésében, azok beregisztrálnak egy callbacket például az "összes kép betöltődött" eseményre. Ebben az a jó, hogy az a modul amelyik a betöltést végzi csak gyengén lesz csatolva azokhoz amelyek a betöltődést figyelik.
Vagy használhatod az "alap" megoldást, és callbackeket hívsz meg ha az összes kép betöltődött.
Ezeket itt szemléltetem. http://jsfiddle.net/ygvvs0sm/
Egyiket sem próbáltam ki, így kezeld őket pseudokódokként. üdv
-
Bici
félisten
-
Jim-Y
veterán
Szia.
Sajnos még mindig nem értek a canvas-hoz, így megint csak a kódodról fogok beszélni.
> Remélem, nem "csúnya" nagyon a kódom.
Nem fogok kertelni, szerintem nem fogod magadra venni, nem is azért írom, de... igen az, sajnos elég csúnya

Na persze ez nem gond! Tényleg nem. Egyrészt mert mindenki kezdi valahol, másrészt meg az látszik, hogy más múltad van. Szépen nem így irunk JavaScript kódot.Ezekkel van probléma benne:
var betolt = function(i,b,a)
{
imageObj[i].onload = function ()
{
ctx.drawImage(imageObj[i], b, 0, d, a);
};
};i, b, a -> ezek a formális változónevek egész egyszerűen rosszak, sosem adunk egybetűs váltzóneveket!
Nem tudni, hogy mit jelölnek. i az vajon index, a b meg a, na erre még tippe sincs az embernek. Nincs overhead akkor sem, ha 1 betű helyett 20 hosszú változó neveket használsz, cserébe értelmes lesz a kód. Ennek azért van jelentősége, mert
1: egy cégnél nem csak te fogod a kódodat olvasni, hanem előbb utóbb más is. És kontextus nélkül ezek a nevek konkrétan hátráltatják más munkáját, az idő pénz, tehát az ilyen nevek használatával pénz deficit keletkezik (lol
). Komolyra fordítva a szót, tényleg más is akarja még olvasni a kódod, ne adj isten módosítani, olyankor jól jön ha "self-descriptive" a kódod.
2: JS-ben gyakran végzünk minifikálást, ami az egyik állomása a buildelésnek, így nem kell figyelni arra, hogy minél tömörebb legyen a kód, a végtermék úgyis tömör lesz.
Példa: még ennél a minimalista példánál is látszik, bár mondanom sem kell, hogy értelmesebb kódnál jobban kijön a minifikálás "előnye"Before (tordeltem):
var myOwnImageObject = [];
function imageLoading(indexVar, someOtherVarWhichHasADescriptiveName, anotherFormalParam) {
myOwnImageObject[indexVar].onload = function() {
context.drawImage(
myOwnImageObject[indexVar],
someOtherVarWhichHasADescriptiveName,
0,
wut,
anotherFormalParam
);
};
}After:
function imageLoading(n,a,e){myOwnImageObject[n].onload=function(){context.drawImage(myOwnImageObject[n],a,0,wut,e)}}var myOwnImageObject=[];Tehát nincs igazán érv az egybetűs változónevek mellett.
3:
Nem túl jó kódod stílusa. Gondolom C++-ból jöttél át, legalábbis én úgy tudom, hogy ott szoktak K&R style -t használni. Ez az automatikus pontosvessző , áhh inkább írom angolul úgyis úgy tudsz rákeresni: automatic semicolon insertion miatt nem ajánlott így kódolni JavaScriptben. Nagyon sok verzió létezik, én leginkább az airbnb-hez tartom magam. Számomra ez eredményezi a leginkább olvasható, karbantartható kódot. Tehát ha az airbnb szerint írjuk a kódodat, akkor valahogy így nézne ki (ha én írnám akkor is):var c = document.getElementById("myCanvas"),
ctx = c.getContext("2d"),
files = document.getElementById("files-upload").files,
imageObj = [],
a = (1920 - (files.length - 1)) / (files.length);
function betolt(i, b, a) {
imageObj[i].onload = function() {
ctx.drawImage(imageObj[i], b, 0, d, a);
};
}
for (var i = 0, len = files.length; i < len; ++i) {
b = (a + 1) * i;
imageObj[i] = new Image();
imageObj[i].src = "útvonal" + files[i].name;
betolt(i, b, a);
}4:
Az a változót tudatosan, vagy sem, de globális scope-ba helyezted, ez rossz szokás, abszolút kerülendő.5:
ez inkább jó tanács: JSHint vagy egyéb linter toolok használata javallott. Szinte minden Editorhoz, IDE-hez létezik már plugin.Üdv
-
Jim-Y
veterán
Szia
1: ... = Array; Ehelyett inkabb ... = [] az ajanlott. [link]
2: ne tegyel semmit kulon fuggvenybe, ahogy fordfairlane is irta, a closure nem tartalmazza az i valtozodat, itt egy (ROSSZ) pelda, ez tortenik most a kododban.
http://jsfiddle.net/Jim_Y/6vy2x7Lo/1/
Latszik, hogy 10x "10" irodik ki a kepernyore, tehat ha lebontjuk, akkor
ctx.drawImage(imageObj[10], b, 0, a, 1080);
ctx.drawImage(imageObj[10], b, 0, a, 1080);
ctx.drawImage(imageObj[10], b, 0, a, 1080);
ctx.drawImage(imageObj[10], b, 0, a, 1080);
...stb tortenikEz azert van, mert az onload fuggveny egy closure-t kepez az ot korulolelo fuggvennyel, ami azt jelenti, hogy amikor az onload fv. lefut, akkor mindig megnezni a runtime, hogy az aktualis kontextusban mi az i valtozo erteke. Mivel az onload aszinkron, ezert amikor azok lefutnak, addigra a ciklus mar vegzett, es az i ciklusvaltozo erteket 10-re novelte. Abban a pillanatban ahogy az onload lookup-olja az i-t, az mar 10-es ertekkel szerepel a kontextusban. Ezert lesz 10x"10" kiirva a konzolra.
Ennek megoldasa, egy uj Execution Context (~ uj variable environment, ~closure) letrehozasaval orvosolhato, amiben az i valtozo mindig az eppen aktualis ertekre lesz beallitva, igy amikor az onload (lookup i) tortenik, akkor az aktualis environment context-ben az i jo ertekkel fog szerepelni.
KetHarom pelda:1: http://jsfiddle.net/Jim_Y/6vy2x7Lo/2/ reading Function.prototype.bind
2: http://jsfiddle.net/Jim_Y/6vy2x7Lo/3/ reading closures
3: http://jsfiddle.net/Jim_Y/6vy2x7Lo/4/ reading IIFE3: Az onload aszinkron muvelet, ami a ciklus lefutasa utan fog csak meghivodni.
Itt egy szemlelteto pelda http://jsfiddle.net/Jim_Y/LsuLL7dg/1/
A kodban a setTimeout az onload-ot szemlelteti. Latszik, hogy amit azon kivul csinalsz, az elobb fut le, mint amit azon belul.
Udv
-
fordfairlane
veterán
-
sztanozs
veterán
-
sztanozs
veterán
-
sztanozs
veterán
Azt írja, hogy a drawImage függvény szignatúrája nem jó...
Uncaught TypeError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': No function was found that matched the signature providedJa nem - [link]
Note If you're specifying an image, be sure the image content has loaded fully if you're calculating the width and height of the img tag. -
Bici
félisten
-
cucka
addikt
-
cucka
addikt
Én meg a Tiédet nem értem, de utánanézek a w3schools-on, hogy értsem is.
Pedig nagyon egyszerű. A függvény hívást az űrlapelem onkeyup és onchange eseményére kötöm rá. Az első akkor fut le, ha begépelsz 1 betűt (és felengeded a billentyűt), a másik meg akkor, ha mondjuk bemásolsz valami szöveget az űrlap elembe vagy simán csak elveszti a fókuszt. Pareméterként az űrlap elem objektumát adom át, így a szövegmanipulálásnál egyből tudom, hogy melyik űrlapelem eseménye hívta meg a függvényemet. Ezzel egyrészt megspórolom a DOM-ban való turkálást, másrészt a függvénynek így teljesen mindegy lesz, hogy melyik input-nak az értékét kell módosítsa.A függvényben egy egyszerű reguláris kifejezéssel működő betűcsere van. A reguláris kifejezés mindenre karakterre match-el, ami nem a-z közötti betű. A reg. kifejezés végén a g kapcsoló mondja meg, hogy ne csak az első előfordulást cserélje, az i kapcsoló meg azt, hogy a kis-nagybetűk közötti különbséget ne vegye figyelembe. A replace második paramétere az üres string, erre cserélünk minden olyan karakter, amire ráillik a pattern-ünk.
-
cucka
addikt
A kódodat nem nagyon értem, de ha ilyen hosszú, akkor már régen rossz.
Például itt egy javascript függvény, ez azt csinálja, amit szeretnél:
function strip_nonalpha(p_sender){
p_sender.value=p_sender.value.replace(/[^a-z]/gi,'');
}És a hozzá tartozó ürlapelem:
<input type="text" name="szoveg" value="" onkeyup="strip_nonalpha(this);" onchange="strip_nonalpha(this);">
-
cucka
addikt
Bármelyik javascript tutorial megfelel, a feladathoz semmilyen extra dolgot nem kell használni. W3Schools-os javascript leírást ajánlom, de lehet, van könnyebben olvasható is a neten.
Nem csak az érdekel, hogy hog ylehet megcsinálni, hanem hogy hogy érdemes.
Ennél a feladatnál a józan észt leszámítva nagy trükköt nem tudsz bevetni, cserébe jó hosszú lesz a kódod.azt már tudom, hogy az "onSubmit" fv.-nyel kell megoldani.
Az onsubmit alapvetően nem függvény, hanem egy esemény, ami akkor hívódik meg, amikor az adott űrlapot elküldöd. (Nyilván, az onsubmit esemény értéke egy függvény).
A különféle ellenőrzéseket /extrákat rákötheted még az űrlap elemek onfocus és onblur eseményeire, ízlés szerint. Az onfocus akkor fut le, amikor az űrlap elem aktív lesz (pl. ráklikkelsz, rámész tabulátorral), az onblur pedig amikor inaktív lesz. Továbbá kisérletezhetsz az onchange eseménnyel is, ez akkor fut le, ha változik az űrlapelem értéke, vagy elveszíti a fókuszt. (Utóbbiban nem vagyok 100%ig biztos). Ezt úgy értsd, hogy pl. egy szövegdoboznál minden egyes betű beírásakor/törlésekor le fog futni. Pl. jelszó beírásnál ezzel tudod látványosan ellenőrizni, hogy elég hosszú-e a jelszó.
(alapból piros x mellette, onchange-nél meg adott feltételek esetén lecseréled zöld pipára vagy visszacseréled piros x-re)
Új hozzászólás Aktív témák
-
Fórumok
LOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás 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ésFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Formula-1
- Autós topik
- Okos otthon - Home Assistant, openHAB és más nyílt rendszerek
- Állítólag összeolvadt a OnePlus és a Realme
- Battlefield 6
- Megújult mobilos felület, fórumos ráncfelvarrás a PROHARDVER! lapcsaládon
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- Energiaital topic
- Ingatlanos topic!
- További aktív témák...
- Eladó egy pixel 8 128/8
- Saeco Intelia Evo Black I Gőzölőkar I Szervizelve I Garancia I Számla I Beszámítás
- Eladó megkímélt, szép állapotú Nikon D750 full-frame (FX) DSLR váz
- Kingston Fury / G.Skill Ripjaws V 64GB 32GB 2x32GB 2x16GB 4x16GB DDR4 3200MHz CL16 RAM memória BAZÁR
- AMD Ryzen 9 5900X / 3900X / R7 3700X + MSI / Gigabyte X570 / B450 Alaplap + Arctic hűtős félkonfigok
- Asus laptop E1504F Ryzen 3
- 27% - ASUS TUF Gaming VG27AQ1A IPS Monitor! 2560x1440 / 170Hz / 1ms / G-Sync / FreeSync
- Bomba ár! HP EliteBook 8460P - i5-2GEN I 4GB I 250GB I 14" HD I DP I Cam I W10 I Garancia!
- Apple iPhone 16 128GB Blue - Karcmentes állapot - 90% akku
- AKCIÓS!! áthajtós érintős 360 szinteÚJ Dell 16 Plus 2-in-1 Ultra 7 258V Intel Arc 140V 32GB 2TB SSD
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest



). Komolyra fordítva a szót, tényleg más is akarja még olvasni a kódod, ne adj isten módosítani, olyankor jól jön ha "self-descriptive" a kódod.
