- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- gban: Ingyen kellene, de tegnapra
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Magga: PLEX: multimédia az egész lakásban
- MasterDeeJay: Legolcsóbb "x99" gép építése. (folyamatban)
- tatabike: Vinted - ahol debilnek néznek
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- djculture: Az elvileg már senkinek nem kellő HDD-k ára is egekbe emelkedett 4 hónap alatt
- Rap, Hip-hop 90'
-
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ékokPROHARDVER! - 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! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena 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
-
Jim-Y
veterán
Sziasztok!
Ezt a szignatúrát nem igazán értem, valaki esetleg el tudná nekem magyarázni?
window.ColumnWidthManager.setColumnsWidth = (function (columnWidthManager) {
return function (gridId) {
columnWidthManager.setWidths(gridId, maxWidths);
};
})(new window.ColumnWidthManager(new swh.ElementWidthProvider()));Illetve hogyan oldható meg az, hogy legyen egy újabb olyan metódus, ami a fentebbi ColumnWidthManager példányt használja?

const elementWidthProvider = new swh.ElementWidthProvider();
const columnWidthManager = new window.ColumnWidthManager(elementWidthProvider);
function getColumnsWidthSetterFn(columnWidthManager) {
return function (gridId) {
columnWidthManager.setWidths(gridId, maxWidths);
};
}
// 1
window.ColumnWidthManager.setColumnsWidth = getColumnWidthSetterFn(columnWidthManager);
// 2
window.ColumnWidthManager.setColumnsWidth = (gridId) => {
columnWidthManager.setWidths(gridId, maxWidths);
}; -
martonx
veterán
Sziasztok!
Ezt a szignatúrát nem igazán értem, valaki esetleg el tudná nekem magyarázni?
window.ColumnWidthManager.setColumnsWidth = (function (columnWidthManager) {
return function (gridId) {
columnWidthManager.setWidths(gridId, maxWidths);
};
})(new window.ColumnWidthManager(new swh.ElementWidthProvider()));Illetve hogyan oldható meg az, hogy legyen egy újabb olyan metódus, ami a fentebbi ColumnWidthManager példányt használja?

Ez egy IIFE.
Azaz egy funkció, ami rögtön meg is hívja önmagát.
JS világban ezt felfoghatod kvázi namespace-nek is.
Másrészt ez a kód nekem nem tetszik. Az egy dolog, hogy ES5-ös, de ahogy ezt így önmagában nézem ez így igazán értelmetlen bonyolítás. -
Jim-Y
veterán
Sziasztok! Adott az alábbi metódus. Mire kéne fűznöm az
onerror-t, hogy meg tudjam hívni benne a deferred object-en areject()-et? Próbáltam már mindenre, de ha direkt rossz adatbázis nevet vagy tábla nevet adok meg, akkor nem fut bele azonerror-omba
dataSourceIndexedDb = function(databaseProp, tableProp){
this.getData = function(){
var open = indexedDB.open(database, 1);
var data;
var defer = $.Deferred();
open.onsuccess = function() {
// Start a new transaction
var db = open.result;
var tx = db.transaction(table, "readwrite");
var store = tx.objectStore(table);
// Query the data
var getAllData = store.getAll();
getAllData.onsuccess = function() {
data = getAllData.result;
defer.resolve(data);
};
tx.onerror = function(error){
defer.reject(error);
};
// Close the db when the transaction is done
tx.oncomplete = function() {
db.close();
};
};
return defer;
};
var database = databaseProp;
var table = tableProp;
dataSource.call(this);
};En ezt valahogy igy oldanam meg. Kicsit objektumorientaltabb.
class DataSourceIndexedDB extends EventEmitter {
get MESSAGES() {
return {
CONNECTION_ERROR: 'error',
DATABASE_OPENED: 'db-opened'
}
}
constructor(databaseName) {
this._dbName = databaseName;
this._database = null;
}
openDatabase() {
const request = indexedDB.open(this._dbName, 1);
request.onerror = this.onConnectionError.bind(this);
request.onsuccess = this.onConnectionSuccess.bind(this);
}
onConnectionError(event) {
this.emit(this.MESSAGES.CONNECTION_ERROR, {
code: event.target.errorCode
});
}
onConnectionSuccess(event) {
this._database = event.target.result;
this.emit(this.MESSAGES.DATABASE_OPENED);
}
getObjectStore(storeName, mode) {
const tx = this._database.transaction(storeName, mode);
return tx.objectStore(storeName);
}
}
const database = 'xyz';
const table = 'xyz';
const indexedDB = new DataSourceIndexedDB(database);
// might be automated in constructor
indexedDB.openDatabase();
indexedDB.on(indexedDB.MESSAGES.DATABASE_OPENED, () => {
const store = indexedDB.getObjectStore(table, 'readwrite');
const request = store.getAll();
request.onsuccess = (event) => {
const data = event.target.result;
// do smtg with data
};
request.onerror = (event) => {
// error handling
}
}); -
mobal
nagyúr
-
martonx
veterán
-
martonx
veterán
Na mondjuk a jquery deferred, promise felejtős, már persze ha nem cél, hogy IE akárhányig visszamenőlegesen kompatibilis legyél. Mivel a régi IE-kben meg nincs is indexedDb, szóval szerintem nem cél.
-
Doink
aktív tag
Sziasztok! IndexedDb a téma, hogyan adhatom vissza a getData() metódussal a táblában található elemeket?
Az async működést nem igazán vágom

this.getData = function(){
var open = indexedDB.open(database, 1);
var data;
open.onsuccess = function() {
// Start a new transaction
var db = open.result;
var tx = db.transaction(table, "readwrite");
var store = tx.objectStore(table);
// Query the data
var getAllData = store.getAll();
getAllData.onsuccess = function() {
data = getAllData.result;
};
// Close the db when the transaction is done
tx.oncomplete = function() {
db.close();
};
};
return data;
};A egyik megoldás az hogy ígéretet (Promise) adj vissza és belül az onsuccess-nél resolve-old, onerror-nál meg reject-eled.
this.getData = function(){
return new Promise(resolve,reject) => {
let query = db.valami_async_művelet()
query.onsuccess = function(result){
resolve(result)
}
query.onerror = function(err){
reject(err)
}
}
}Így fogod tudni meghívni:
ValamiService.getData().then((result) => {
// beteljesült az ígéret és a result-ban lesz az eredmény
}).catch(error) => {
// hiba
});Másik elegáns megoldás ha cold observable-t használsz (rxjs).
-
Karma
félisten
Sziasztok! IndexedDb a téma, hogyan adhatom vissza a getData() metódussal a táblában található elemeket?
Az async működést nem igazán vágom

this.getData = function(){
var open = indexedDB.open(database, 1);
var data;
open.onsuccess = function() {
// Start a new transaction
var db = open.result;
var tx = db.transaction(table, "readwrite");
var store = tx.objectStore(table);
// Query the data
var getAllData = store.getAll();
getAllData.onsuccess = function() {
data = getAllData.result;
};
// Close the db when the transaction is done
tx.oncomplete = function() {
db.close();
};
};
return data;
};Az aszinkron működést nem tudod megkerülni, úgyhogy olyan getData függvényt, amit egyszerűen szinkron módon meghívsz és eredményeket ad vissza, lehetetlen írni. (Nem is feltétlen baj.)
Van egy pár lehetőséged, az egyik legegyszerűbb, ha adsz egy callback paramétert a getData függvényednek. Ez például egy olyan kétparaméteres függvény, aminek az első paramétere a futáskor történt hiba (lehet `null` is ha minden szép), a második pedig a tényleges adat.
A lényeg, hogy az indexedDB-s kódod az utolsó onsuccess handler végén meghívja ezt a függvényt, így tudod feldolgozni az eredményt.
Például:
this.getData = function(callback){
var open = indexedDB.open(database, 1);
open.onsuccess = function() {
// Start a new transaction
var db = open.result;
var tx = db.transaction(table, "readonly");
var request = tx.objectStore(table).getAll();
request.onsuccess = function() {
callback(null, request.result);
};
request.onerror = function() {
callback(request.errorCode);
};
// Close the db when the transaction is done
tx.oncomplete = function() {
db.close();
};
};
open.onerror = function() {
callback(open.errorCode);
}
};Máshol meg így hívod:
valami.getData(function(err, data) {
if (err) {
console.log("Error while reading data", err);
return;
}
console.log("Found data", data);
});Ha meg tisztább kódot akarsz, keress egy promise wrappert az IndexedDB-hez szerintem. Persze azt is meg kell tanulni használni először.
Amúgy sose használtam az IndexedDB-t, de a megérzésem azt mondja, hogy nem kéne minden lekérdezésnél nyitni-zárni.
-
Jim-Y
veterán
Sziasztok! Adott egy saját komponens, aminek vannak publikus metodusai. jQuery objektummá kell konvertáljam, ami megy is
$drop = $(dropdown);, viszont így az alap komponens metódusai elvesznek. Hogyan csináljak belőle úgy jQuery object-et, hogy közben megmaradnak a metódusai?$.extend-el próbálkoztam, de nem jártam sikerrel
https://jsfiddle.net/bnrmss1j/1/
Ha nem ez volt a kerdes akkor meg csak siman jobban kell kerdezni ^^
-
fordfairlane
veterán
Javascriptben a függvény vagy metódusparaméterek mindig opcionálisak. ES6-tól a függvény paramétereinek lehet default értéket adni, ES6 alatt pedig lehet használni az arguments objektumot.
-
Jim-Y
veterán
Nekem ez itt elegge egy linknek tunik
<li><a href="partnerek.html" tabindex="-1"> Partnerek</a></li> -
fordfairlane
veterán
Sziasztok! JS-t tanulgatok és akadt egy problémám. Custom dropdown komponenst kell létrehoznom, ami félig meddig sikerült is, de valamiért a buttonra kattintva csak egy pillanatra nyílik le a legördülő menü, majd eltűnik az éterben. Mi lehet az oka?
Elég sok fájl hiányzik ahhoz, hogy reprodukálható legyen a probléma.
-
tboy93
nagyúr
dropButt.click(function(){
toggleDropDownContent(dropContent);
return false;
});A
return false;hiányzott neki valamiért
-
Zedz
addikt
which implements the model–view–controller (MVC) pattern
Idézet a linkedből. Nincs olyan, hogy "ilyen mvc". Ez ugyan az mint amit linkelte, totálisan más mint amiről amúgy beszélünk.Miért akarod mindenképp JS-sel megoldani? Mutasd meg a munkahelyden, hogy szebben sikerült megoldani, mint ahogy kérték.
ASP.NET MVC-től szintén független a Javascript. JS tudás nélkül is neki tudsz esni, tekintve, hogy maximum frontend oldalon fogod használni, aztán onnantól meg a szerver közel mindegy. By the way martonx kolléga az ASP.NET MVC guruja, ő többet tudna róla mesélni, hogy hogyan is kell hozzá fogni.
-
Jim-Y
veterán
En nem mondom, mint a tobbiek, hogy ne igy csinald. Ezt a feladatot kaptad igy csinald szepen meg, bar agyuval losz a verebre semmilyen dropdown a mai vilagban nem igy mukodik mint ahogy ezt csinalod. Ettol fuggetlenul kalapald valahogy ossze es utana kezdj el egy normalis eletszeru feladaton dolgozni.
Mondok 1-2 peldat:
1: js tanulasra -> irj egy backend-frontend alkalmazast. A backend legyen egy sima faek egyszerusegu REST szerver. express vagy koa peldaul. Ne csinaljon tobbet mint regisztraljon 1-2 endpointot es adjon vissza par adatot. A frontend legyen angular vagy react es ne csinaljon mast mint kommunikaljon a backenddel kerje el az adatot es jelenitsen meg belole egy chart-ot. Pl d3-al. Ez egy egyszeru kezdoknek is egy nap alatt veghez viheto feladat es erinti azokat a dolgokat amikkel nap mint nap fogsz talalkozni front-end fejlesztokent. AJAX, charting, FE framework stb..
2: css tanulasra -> csinalj egy olyan komponenst ami egy jobb oldali menu sort implemental. A kepernyo jobb oldalan teljes magassagban egy mondjuk 70 pixel szeles savban ikonokat tud tarolni, pont mint egy navigacios menu. A kihivas benne az, hogy ez a sav fix 70 pixel szeles legyen DE ha tobb ikont teszunk bele mint amennyi latszodna az aktualis bongeszo meretetol fuggoen akkor a lelogo ikonokat eltunteted (overflow:hidden) viszont ha raviszed az egeret a 70px szeles savra akkor baloldalon kinyilik a panel es lathatova valnak a nem latszodo ikonok.
Lehet nem ezeket fogod csinalni vegul, de szerintem ezek sokkal inkabb eletszeru feladatok mint egy dropdown implementalasa js-ben.
-
Zedz
addikt
Nem értem a problémát. A HTML rész kigenerálása valamilyen template enginnel (blade, pug, jinja, whatever) az egy dolog. Erre ráhúzni a fentebb linkelt CSS-t, megint más. Független a kettő egymástól.
MVC fejlesztés lesz a fő feladatom
Ez a kijelentés így hibás. Az MVC egyfajta logikai struktúra. Ez szintén független a témánktól.ehhez szükséges HTML, CSS, Bootsrap 3, jQuery, JS tudást kell felszednem
Pure CSS megoldás fentebb, de a Bootstrap is rendelkezik beépített dropdownnal. Az más kérdés, hogy ha jól emlékszem akkor ők JS-sel oldják meg, de szigorúan magány véleményem szerint a bootstrap semmilyen szempontból sem követendő példa.Milyen szinten akarsz JS-t tanulni?
Azért kérdeztem, mert ajánlottam volna olvasni valót. -
Zedz
addikt
-
mobal
nagyúr
-
mobal
nagyúr
Sziasztok! JS-t tanulgatok és akadt egy problémám. Custom dropdown komponenst kell létrehoznom, ami félig meddig sikerült is, de valamiért a buttonra kattintva csak egy pillanatra nyílik le a legördülő menü, majd eltűnik az éterben. Mi lehet az oka?
Dropdown-t én CSS-ből csinálnék.
Ú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ékokPROHARDVER! - 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! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena 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
- Villanyszerelés
- HiFi műszaki szemmel - sztereó hangrendszerek
- Forza sorozat (Horizon/Motorsport)
- Házimozi belépő szinten
- Óra topik
- Kerékpárosok, bringások ide!
- One mobilszolgáltatások
- Apple MacBook
- Kínai és egyéb olcsó órák topikja
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- További aktív témák...
- Kingston KC3000 PCIe 4.0 NVMe M.2 2TB-os, bontatlan SSD, 2 év garanciával eladó!
- Samsung 990 Pro 1TB-os PCIe 4.0 M.2 NVMe 2280 SSD, bontatlanul, 2 év garanciával eladó!
- ADATA Legend 900 Pro 2TB-os PCIe Gen4 M.2 NVMe 2280 SSD, bontatlanul, 5 év garanciával eladó!
- AMD R7 350X és RX550 VGA kártyák
- Megvigyázott, 3,5 éves, 128 Gb, iPhone 13, 81% akku
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest



Senior kolega a




Happy coding! 
