- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Android alkalmazások - szoftver kibeszélő topik
- VoLTE/VoWiFi
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Szívós, szép és kitartó az új OnePlus óra
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- CMF Phone 2 Pro - a százezer forintos kérdés
- Egyszerre legnagyobb és legkisebb is a Garmin Venu X1
- Mobil flották
- Samsung Galaxy A52s 5G - jó S-tehetség
-
Mobilarena
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
-
martonx
veterán
-
Sk8erPeter
nagyúr
Nem úgy "okosítod fel" a NetBeans-t, hogy "valahogy" működjön JS-fejlesztésre, hanem faszán működik JavaScripthez is. Hidd el, nem mondanám, ha nem használtam volna már sok-sok órát. Debuggoltam is már benne JavaScript-kódot, ehhez kapcsolódót itt írtam:
http://prohardver.hu/tema/weblap_keszites/hsz_10596-10596.html
Az Eclipse-et én sem szeretem, nem találom kézenfekvőnek, csúnyának is találom (mindig meglepődöm, amikor valaki Eclipse-kedvelőként a NetBeans-re mondja ugyanezt), úgyhogy azt alapvetően én sem annyira szeretem használni, pedig nagyon komoly pluginek vannak hozzá, és sokszor bizonyos projektekhez vagy bizonyos munkahelyeken kikerülhetetlen. (Egyébként engem a különutas megoldásai is idegesítenek, pl. ha 3 IDE-ben megegyezik egy bizonyos billentyűkombináció, akkor az tuti, hogy az Eclipse-ben defaultból valami tök más. De ez csak egy példa, mert ez még könnyen átállítható, de sok helyen az elrendezése is valahogy "olyan Eclipse-es".
)
A WebStormot (vagy PHPStormot) elég rövid ideig próbálgattam, jónak tűnt, emlékeim szerint tetszetős volt a felülete, de nem sikerült rájönnöm, hogy miért is érné meg ezért fizetnem, amikor a NetBeans számomra ugyanezeket tudja. Félreértés ne essék, nem akarok senkit lebeszélni a WebStormról (vagy PHPStormról), de szerintem nem biztos, hogy azonnal rohanni kell a pénztárhoz, ha van ingyenes alternatíva is. -
Sk8erPeter
nagyúr
Szerencsére ezeket mind tudja a NetBeans is.
Git-, SVN-támogatás, meg sok egyéb is lehet egy-egy plugin formájában, ha már az egész moduláris. Érdemes a Git toolbart is felrakni hozzá.
Nekem az a bajom a WebStormmal, hogy nem ingyenes. Fizetős, miközben ezeket ingyen tudja a NetBeans és valószínűleg az Eclipse is (csak plugineket kell felrakni hozzá, ami mondjuk a WebStormban alapból benne van), plusz mint a Wikipédiás lapról kiderül, ez a program is Javában íródott, tehát a JVM overheadje ennél is ugyanúgy jelen van, így nem látom, mit tudunk nyerni ezzel a fejlesztőkörnyezettel a másik kettővel szemben. Persze ettől még elhiszem, hogy kényelmes, biztos a különbségek fejlesztés közben derülnek ki. Sokan szeretik a WebStormot JavaScript-fejlesztésre, de érdekelne, hogy milyen pluszt tud az ingyenes alternatívákhoz képest, mert én még nem fedeztem fel olyat, ami ne lehetne pótolható pluginnel NetBeans-ben és Eclipse-ben (én az előbbit szoktam használni gyakrabban).
-
cSuwwi
senior tag
-
dqdb
nagyúr
Opera 12-ben pont az a leggyorsabb
getElementById 2,753,807
querySelector 249,225
getElementsByClassName 1,654,260
querySelectorAll 3,278,591
jQuery - id 849,313
jQuery - class 160,468Opera 25 (más Blink motoros böngészőben hasonlóak lehetnek az értékek):
getElementById 16,966,523
querySelector 6,662,027
getElementsByClassName 15,028,808
querySelectorAll 284,449
jQuery - id 1,267,419
jQuery - class 333,583Szóval bár Cathfaern magyarázata szerintem teljesen logikusnak tűnik, a számok alapján egyszerű optimalizálatlanság lehet a háttérben. Az igazán érdekes számomra az, hogy a többi megoldásnál látható hatalmas különbségek jQuery használatával mennyire eltűnnek.
-
Cathfaern
nagyúr
Felteszem az az oka, hogy abban teljes css-szerű selectort meg tudsz adni, nem csak classokat. Ezért általános megoldást alkalmaz, míg direkt classra keresés esetén lehet spec optimalizálást használni az implementációban (illetve kezdjük ott, hogy alapból be kell parsolni a selector stringet, ami plusz idő)
-
Sk8erPeter
nagyúr
Hát végül is ötletadónak nem rossz, de szerintem értelmesebb lenne akkor már inkább más nevet adni az ilyen custom kódoknak, ha már az eredeti működést elcseszi.
Mármint ha kiemeljük a kontextusból az event handlert, és fogalmunk sincs róla, hogy ez úgy készült, hogy át lett definiálva a beépített addEventListener, mert mondjuk más fejlesztők vagyunk, mint aki ezt készítette. Szóval ez akkor lenne poén, ha az eredeti szintaktikával is helyesen működne (értsd: az event handler az eventet kapná első argumentumként, ahogy eredetileg is van, nem az event.targetet), és így "hordozható" lenne. Na mindegy, amúgy jópofaszság.
Fú de sokat pofáztam, szóval így jobb sztem akkó' má':
http://jsfiddle.net/LLkV4/2/
De nem is tudom, minek analizáltam ennyit a dolgot, fáradt vagyok. -
Jim-Y
veterán
FYI
Amúgy végül tényleg az első megoldás lett a nyerő, vagyis ezt alkalmaztam a többi függvénynél is. Már csak azért is, mert ezzel az olyan függvényeknél is analóg módon tudom megoldani a hibák lekezelését amik alapból nem promissal térnének vissza.
Kis magyarázat:
- a mongoose api-nak vannak Query tipusú függvényei, amiken lehet hívni exec()-et, ami miatt Promissal térnek vissza. Ilyen például a find(), vagy a findById(). Ezeknél elég volt (lett volna) ennyit írni az ArticleProviderbeArticleProvider.prototype.findAll = function() {
return this.Article.find().exec();
}majd a hívó oldalon már le tudom kezelni a Promise-t.
function getArticles( req, res, next ) {
var promise = articleProvider.findAll();
promise.onResolve(function( err, articles ) {
if( err ) { .. }
// handle
});
}Ez mind szép, és jó, de vannak olyan mongoose függvények amik nem promissal térnek vissza. De az előző posztban mutatott módszerrel ezeket is sikerült promisokkal megoldani, ezért választottam végül ezt a megoldást.
-
martonx
veterán
Nekem mindegy, de ezeket az elcseszett rövidítéseket nagyon gyorsan gyomláljátok ki! Az intellisense és a js minifikálás korában ne szopassuk már magunkat ilyen rövidítések használatával. Fontosabb az olvasható kód, mint a forráskódban megspórolni pár karaktert (amit aztán a minifikálás úgyis a, b és c-re fog cserélni éles környezetben).
-
-
kemkriszt98
tag
Bocsánatot kell kérjek, azt akartam írni hogy ha valaki egy képre kattint...
function onClick(mouseEvent){
var largeE =document.querySelector("#e");
var largeO =document.querySelector("#o");
if(mouseEvent.target.id == "1"){
largeO.src= "http://www.youtube.com/v/m53v0Bn0ynQ?hl=hu_HU&version=3";
largeE.src= "http://www.youtube.com/v/m53v0Bn0ynQ?hl=hu_HU&version=3";
}else if(mouseEvent.target.id == "2"){
largeO.src= "http://www.youtube.com/v/hzLVr2NzC-A?hl=hu_HU&version=3";
largeE.src= "http://www.youtube.com/v/hzLVr2NzC-A?hl=hu_HU&version=3";
}
} -
kemkriszt98
tag
Hát már ezt is tudom
Egyébként még nem nagyon merültem el a Js-es könyvben, ezt a kódot is a 24 órás HTML-es könyv alapján dobtam össze
Most már csak az nem világos a példával kapcsolatban, hogy honnan tudja a böngésző, hogy neki azt a kódot kell futtatni? Sehol nem látok erre utalást a HTML kódban. Vagy ez, hogy működik?
-
Sk8erPeter
nagyúr
-
Kommy
veterán
lényeg van egy ilyen js fájlom amiben ez van:
$(document).ready(function() {
$("#track").change(function(){
var value=$(this).children('option:selected').val();
var valueid=$(this).children(':selected').attr("id");
$("#edit").load("result.php?q="+value+"&x="+valueid+"&f=1&c=0");
});
});És ami a php-ban van mint kimenet:
<select name='track' id="x">
<option id= "y" value="Érték">"Érték"</option>
</select>És a gondom az lenne, hogy míg ezt kézzel minden változásnál megcsináltam, hogy adtam neki egy fix id-t a select-nek , most ezt szeretném valahogy megoldani, hogy automatán működjön és elég legyen egy ilyen change függvény.
-
Sk8erPeter
nagyúr
Hű basszus, na ez ciki, jó tompa voltam, bocsánat. Most visszanézve a hsz.-eket, így már tiszta, mit szerettél volna. Azt nem fogtam fel eredetileg, hogy mit is szeretnél szebbé tenni, nem is beszélve arról, hogy amikor beszéltünk róla, még a .bind() sem ugrott be, pedig elég kézenfekvő, és még az itteni kódodban is szerepel...
Szerintem a legrövidebben úgy lehetne jól megfogalmazni, hogy az adott elemre vonatkozó event handler átadásának pillanatában szeretnél már vonatkozó paramétereket is átpasszolni, az event handlert pedig teljesen általánosan "megfogalmazni", hogy ne legyen tele ronda if-else-ekkel vagy switch-case-ekkel pl. az event.targettől függően.
Szóval sorry, ez most nem az én napom.(#4092) Karma :
"nem értem az ellenhurrogást, hiszen a this bepasszolása az eseménykezelőnek igencsak alapvető dolog"
Jogos, és jó is, hogy beírtad a megoldást; de szerintem jelen esetben pont nem csak a this bepasszolása a lényeg, hanem az egyéb paramétereké (végül is elvileg ez volt a kérdés, nem az, hogy hogy tudja használni a this-t), hiszen a this magában az event handlerben is "elérhető" lenne. Úgy értem, pont a this miatt a .bind() használatának előnye nem pont ennél a feladatnál kristályosodik ki igazán, mert a this működik az ebben a példában szereplő btnHandlerWithoutParams fv.-nél is: http://jsfiddle.net/8LCcR/2/ -
Sk8erPeter
nagyúr
Nem értelek, itt már egy az egyben azt írtam le, mit tudsz csinálni.
"item.addEventListener('clck', csodalatosEventHandler -> na ennek akarok paramétert megadni. Ugyanis ezt a függvényt újrahasznosítanám később is."
Miért akarsz olyan módon csinálni valamit, amire nem való, vagy amit nem lehet vele?
https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener
target.addEventListener(type, listener[, useCapture]);
target.addEventListener(type, listener[, useCapture, wantsUntrusted ]); // Gecko/Mozilla only
Ez a fejléc, és kész.Azt nem fejtetted ki, mi a gondod azzal, hogy az event handlerben kezeled le, mi történjen a kattintás által célzott (e.target) elemmel?
Így szokás ezt elintézni, és ennyi. Hogy most az abban történteket egy erre külön kitalált függvényben intézed-e még el, vagy aztán azonbelül hány függvényt/metódust hívogatsz, az tervezői döntés.
Azt nem mesélted el még, mi az alapfeladat, ami miatt zavar, hogy az addEventListenernek nem tudsz átadni olyan paramétereket, amit az nem enged...Egyébként ilyen alapon saját addEventListenert is definiálhatsz valami más néven, aminek beadhatsz különböző paramétereket, wrappert építve az alap addEventListener köré, aztán egyedileg kezelve, csak nem sok értelmét látom.
Ja, még egy fontos dolog: használhatod nyugodtan a data-attribútumokat, így lényegében "be is drótozhatsz" bizonyos tulajdonságokat az elembe, amik konkrétan arra vonatkoznak, ezeket meg lekérheted a JavaScript-kódból. Ez is lehet egyfajta "paraméterezés", és akkor lehet, hogy megkerülted a problémát, mert nem kell óriási switch-case. (Ne brutálsok if-else-t írjál, ha már, erre találták ki a switch-case-t.
De előbb gondold végig, vagy írd le ide, mit szeretnél konkrétan.)
-
Sk8erPeter
nagyúr
Mivel neked a this.akarmi kell, miért nem magában az event handlerben passzolod át a szükséges paramétereket a goTo() akármilyen függvénynek?
Amúgy kerülendő, hogy egy ciklusban definiálsz anonim függvényként event handlereket, inkább legyen egy "közös" event handlered, amire kb. függvénypointert adsz át:function tokMindegy(valamiObject, blablaParams) {
// ...
}
function csodalatosEventHandler(e) {
tokMindegy(e.target, "bizony");
// ...
}
buttons[i].addEventListener('click', csodalatosEventHandler); -
Sk8erPeter
nagyúr
Nem az én kódom, mivel mint látható volt, az openjs.com-ról szedtem, de egyébként ez a kód működőképes, ami ott van.
Gondold át jobban: a this jelen esetben az egész window objektumra vonatkozik. Mivel a függvény így a this része, a this.hasClass() működik is...
Azt is használhatnád - bár elég undormány lenne - hogy this.alert('akarmi'), és működne.
Hogy sikerült ezt így 124123 év múltán megtalálni?
-
Karma
félisten
Alapvetően jól képzelted el, erről van szó: adott egy többé-kevésbé komplex webalkalmazás, lokálisan vagy online megnyitva, amit egy natív mobilalkalmazás futtat egy beágyazott böngészőben. Platformonként változik, hogy milyen csatornán keresztül (ld. az előbbi InvokeScript WP-n, navigációt Androidon és iOS-en), de kommunikálhat a szkript is kifelé (ez pl. Androidon a legerősebb, mert közvetlenül ki tud hívni Java metódusokra).
Lehet hackelni is, mint az előző kérdésvonulatban, de ha az ember nulláról épít hibridet, jobban jár ha megtervezi magának az interfészt előre
Én egy olyan alkalmazásban használtam ilyen architektúrát, ahol a backenden generált tetszőleges tartalmú kérdőíveket (mini webalkalmazásokat) lehet generálni, a kliensek letöltik ezeket, és utána a felhasználók offline kitölthetik újra meg újra. A JS interfész ott jön a képbe, hogy a kitöltés eredményét ezen keresztül szivárog át a Java kódhoz, ami a tárolást és feltöltést kezeli.
-
Karma
félisten
-
Karma
félisten
Ha önszivatáson kívül tényleg látni akarsz ilyet, akkor javaslom Java alatt a CXF-et, .NET-nél meg a WCF-et. A valóságban úgyis ehhez hasonló szintű eszközök vannak a SOAP mögött - és még csak nem is nehéz használni őket alapszinten.
Illetve a magyar intraneteken előfordul az Axis 1.4 még mindig, pedig az általa használt kódolást már semmi se támogatja... Az külön élmény önmagában is.
-
Karma
félisten
Sikerült összehoznom félig-meddig.
Ezzel az online WSDL generátorral csináltam a WSDL-t, értelemszerűen kitöltve a mezőket egy Hello World operationhöz. [WSDL].
Aztán így implementáltam a szervert hozzá:
var soap = require('soap');
var http = require('http');
var helloService = {
helloworld: {
helloworld_0: {
hello: function(args) {
return {
message: 'Hello ' + (args.name || 'World') + '!'
}
}
}
}
}
var wsdl = require('fs').readFileSync('hello.wsdl', 'utf8'),
server = http.createServer(function (req, resp) { resp.end("404 Not found: " + req.url) });
server.listen(8001);
soap.listen(server, '/helloService', helloService, wsdl);És erre SoapUI-ban rá tudtam csatlakozni, és még helyesen is működött
.NET-ben viszont nincs ekkora szerencsém, ott ProtocolExceptionnel elszáll. A SoapUI mock service-ével, amit ugyanebből a WSDL-ből generáltam, simán működik viszont.
---
Nekem nagyon az az érzésem, mint Android kapcsán is, hogy a SOAP egy régi idők letűnt megoldása, amit a mostani eszközökkel már nem kéne erőltetni. Akkor már egyszerűbb egy .NET/Java frontendet elérakni, ami JSON-re fordít mindent...
-
Karma
félisten
Meg utána toszik működni, se VS2013-ból, se SoapUI-ból nem tudok ráhívni. Mondjuk 0.1.0, amit egyszer valaki kinyomott és azóta nem nyúlt hozzá...
Szerintem meg ez a szerver modul sose fog működni. Viszont ha meg tudod írni a WSDL-ed, a node-soap már bíztatóbbnak tűnik - legalábbis a kommentek alapján...
-
Karma
félisten
Akkor valamit nagyon rosszul tartasz, mert én lemásoltam a példakódot kis módosításokkal, és létre is jött a service meg a WSDL is.
C:\Users\Zsolt\Documents\soaptest>node
> var soap = require('soap-server');
undefined
> function test() {
... test.prototype.hello = function(name) {
..... return "Hello" + (name || "World") + "!";
..... }
... }
undefined
> var server = new soap.SoapServer();
undefined
> var service = server.addService('helloService', new test());
undefined
> server.listen(1337, '127.0.0.1');
undefinedEzután a http://127.0.0.1:1337/helloService?wsdl linken bejött a WSDL (kimásoltam).
-
trisztan94
őstag
Bocsi, hogy csak most válaszolok.
Végül sikerült megoldani future objektumokkal... vagyis... sort of.
Ez a végleges megoldás, lehet, hogy gány, de egyelőre működik, bőven elég. Tudok végre haladni.
$('.form-directions').on('submit', function () {
waypoints = [];
promises = [];
$('.waypoint').each(function () {
promises.push(geoCode($(this).val()));
});
return false;
});function geoCode(address) {
var deferred = $.Deferred();
nokia.places.search.manager.findPlaces({
searchTerm: address,
onComplete: function (data, requestStatus, requestId) {
onGeoCodingCompleted(data, requestStatus, requestId);
deferred.resolve();
},
searchCenter: map.center
});
return deferred.promise();
}Az onGeoCodingComplete függvényben nem változik semmi, csak ezt az egy plusz sort raktam bele:
if (waypoints.length == promises.length / 2) {
drivingDirections();
}Na most azért lett osztva a promises tömb kettővel, mert valamiért minden esetben a waypoints tömb elemeinek számának kétszerese volt benne. Tehát mindent 2x vett.
Tehát annyi a kérdés, hogy miért van a promises tömbben 2x annyi elem, mint a waypoints tömbben?
-
Sk8erPeter
nagyúr
Nem szántam offenzívnek, mert amúgy hasznos anyagokat gyűjtöttél össze, raktál bele energiát, bocs, ha úgy tűnt.
Inkább jelezni szerettem volna, hogy az említett rész a Node.js-sel ebben a formában még egy kezdőt nagyon nagy eséllyel teljesen összezavar, mert abban a fázisban az sem tiszta, mi az a kliensoldali és szerveroldali JavaScript-kód, mi az a Node.js, és még kismilliónyi lehetőség van a Node.js telepítése előtt, amivel ki lehet próbálni a JS-kódot. Na meg akkor már a Windows-ra telepítés módszerét is meg kéne említeni.Mondjuk az csak egy installer-fájl a nodejs.org-ról: http://nodejs.org/. Amúgy érdekességként: Windows-on lehetséges Web Platform Installeren keresztül is bekattintani a Node.js telepítését.
"Nekem sokszor nagyon jól jött volna, ha ezt már korábban ismerem, például ha csak ki akarom próbálni élesben, hogy mit csinál a map(), akkor nem csinálok
- egy .js fájlt benne implementálva egy tömböt, meghívva rá a map-et.
- illetve egy html fájlt, amiben hivatkozok a js fájlra,
- majd a html fájlt megnyitom a böngészőben
Vagy,
- nem nyitok egy firefoxot, benne egy konzolt
- meg egy scratchpad-et
Vagy megyek a jsfiddle-re"Ezek például mind jó alternatívák, amiket meg lehet említeni.
A böngészőt az ember úgyis folyton megnyitva tartja.Ott nyom egy Ctrl+Shift+I (vagy F12) billentyűkombót, és az ennek segítségével előhívható fejlesztői panelon keresztül, a Console fülön tud tenni egy gyorspróbát a JS-kódokkal; a fejlesztői panellel úgyis minden webfejlesztőnek meg kell ismerkednie.
"Hanem nyitok pl egy aptana studio-t, vagy a geditet (mindkettőben van embedded terminal) és sokkal gyorsabban tudom tesztelni a megírt kódomat, mint a fenti esetekben."
Ez is egy módszer.
Egy haladó részben esetleg azt is meg lehetne említeni, hogy mind böngészőn, mind integrált fejlesztőkörnyezeten (IDE) keresztül van lehetőség JavaScript-kód debuggolására, utóbbira példa a NetBeans Connector, ami szerintem nagyon hasznos, itt tettem róla említést:
http://prohardver.hu/tema/weblap_keszites/hsz_10596-10596.html
http://stackoverflow.com/questions/15801506/how-to-debug-javascript-and-php-togheter-in-the-same-netbeans-7-3-project/20809988#20809988Szívesen foglalkoznék ezzel, de se időm, se energiám most erre.
(#3944) BomiBoogie :
OK, köszi, reméljük, lesz előbb-utóbb valakinek ideje rá, vagy nekem, vagy másnak. -
martonx
veterán
Szerintem vagy vegyük ki a node.js-es részt, vagy akkor már soroljuk fel a kismillió egyéb lehetőséget, ahogy lehet futtatni egy javascriptet.
Pl, hogy mást ne mondjak windows-on simán konzolból lehet futtatni, még node.js-se kell hozzá. Aztán ott van a kismillió fejlesztő környezet, mindenféle platformon, amikkel minddel lehet js-t futtatni, mindegyikkel egyszerű.
-
Sk8erPeter
nagyúr
"Az eseménykezelőknél ez lehet, hogy így van (ezt nem tudtam), de általánosságban, javascriptben, pedig úgy, ahogy írtam."
Ezt hogy érted, hogy általánosságban? Mármint mire vonatkozóan?(#3928) :
ezt a linkes dolgot végül elfelejtettem, szerintem nyugodtan mehetnek a linkjeid végül is az összefoglalóba, hasznos anyagokat szedtél össze, főleg a Douglas Crockford-előadássorozat jó lesz oda.
Szóval nyugodtan berakathatnád a modker topicban!
Csak a Twitteres követősdi nem kell szerintem. -
Karma
félisten
"- a this mindig a hívó objektumra utal. Ebben az esetben amire a focusout-ot meghívtuk. Mire hívtuk? $('input')-ra ami egy olyan objektum ami az oldal összes input mezejét tartalmazza."
Ez nettó marhaság, az eseménykezelő függvényekben mindig az az egy elem a this, aki az eseményt generálta. Tehát semmi szükség ID-t adni a bemeneti mezőnek! Sőt!
Itt van máshogy megjavítva a kód. Mint látható, csak két gond volt a kóddal: az aposztrófok a this körül, és hogy nem az input mező értékét próbálta lengthtel ellenőrizni. Bátorkodtam sokszorosítani az input mezőket, hogy demonstráljam az álláspontomat.
-
Sk8erPeter
nagyúr
Tegnap én is csináltam egy nagyon rövidet, csak ilyen tök egyszerűekkel, hogy linkek jsFiddle-re és társaira, és hogy aztán bővítjük, csak aztán nem küldtem el a modker topicba, de most megtettem, de majd holnap átrágom azt is, amit írtál.
Most csak nagyon gyorsan átfutottam, és jó linkek vannak benne, de szerintem kissé túl sok, nem tudom, ki fog elolvasni/megnézni ennyi mindent; például a végefelé a Twitteres linkek úgy, ahogy van, felejtősek, tök felesleges ezeket belerakni, szerintem nem illenek a PH-s összefoglalóba (érdekességként lehet őket követni, de ide inkább a tanulást elősegítő vagy hülye kérdéseket megelőző linkeket kellene bepakolni). -
LógaGéza
veterán
Elnéztem, 10,30-at kell adnia...
A 40.00-ra ez a függvény van:
$("#price").html(Dollar((amt*0.4)+(((amt*0.4) < 15.01) ? 0.3 : 0)) + " Euro");
Ez egy "mini-webáruházhoz" hasonlítható legjobban. 1 termék van, abból 2 típus. Eddig Euróval lehetett csak fizetni, én azt akarom megoldani, hogy lehessen Forinttal is - bár lehet egyszerűbb lenne azt megoldani, hogyha a Forint van kiválasztva, akkor az Euro értékét szorozza meg 300-al, és köszönöm...
A Dollar függvényhez én nem nyúltam egyáltalán, az készen jött valahonnan.
-
LógaGéza
veterán
Tényleg az kimaradt.
function Dollar (val) {
var str,pos,rnd=0;
if (val < .995) rnd = 1;
str = escape (val*1.0 + 0.005001 + rnd);
pos = str.indexOf (".");
if (pos > 0) str = str.substring (rnd, pos + 3);
return str;
}Viszont akkor tényleg nem értem hogy jön ki a 40.00 Euro
-
Sk8erPeter
nagyúr
"2: az input tageket nem zártad le normálisan."
Én is le szoktam zárni, hozzá vagyok szokva az XHTML-szintaktikához, de egyébként HTML4-ben és HTML5-ben sem okoz validitási problémát ennek hiánya."3: a htmlben lévő onClick kerülendő, hivatalosan? is deprecated, vagyis elavult."
Miért lenne már az onclick attribútum hivatalosan is deprecated?
Egyébként valóban kerülendő, az igaz, de ettől még nem deprecated.
Ami viszont deprecated, az a script tagben használt language="JavaScript", amit már ötezer éve nem használnak. Remélem, azon az ún. "webmester képzésen" nem ezt nyomatják, ha igen, akkor máris árulkodó, hogy mennyire szart sem ér..."4: a teszt függvényed két paraméteres, te pedig egy paramétert adsz át neki, így meg sem hívódik."
Hogy micsoda?!
1. a meghívás: teszt(mezo.value,numerikus.num) - mint látható, két paramétert ad át
2. attól még, mert akár 0 paramétert ad át egy 2 paramétert "váró" függvénynek, már miért ne hívódna meg?Ez azért csúnya volt.
Ez JavaScript.Egyébként ez a teszt() függvény nem sokra jó, ez csupán ellenőrzi, hogy az egyik szóban lévő karakterek előfordulnak-e a másikban; például a teszt('teniszütő', 'teniszütőségesség') és a teszt('teniszütő', 'tsesnsissszsüstsős') is true-t fog eredményül adni, míg a teszt('teniszütő', 'tenisz') például nem (false).
"6: úgy használod a ciklusokat és elágazásokat mintha lambda kifejezések lennének"
Nem láttam ilyeneket, ezt mire értetted?Muszáj volt ezeket korrigálni, sorry, hogy épp a Te hsz.-ed esett ennek áldozatul, de az állítólagos webmester képzésen (!!) részt vevő illető mindezt már kész tényként ve(he)tte...
-
Sk8erPeter
nagyúr
Gondolom azt akarja szemléltetni, hogy visszaadhatod így is, aminek következtében metódusokat hívogathatsz, amiben lehet valami más logika is, nem csak egy értéket visszaadsz, és kész, hanem mondjuk a feladathoz szükséges dolgokat elvégzed a metódusban. De most igazából pont te mutattál egy esetet, ahol kiderül, miben tud más lenni a kettő.
Hozzáteszem, számomra ez ilyen formában jóval olvashatóbb:
function Bar() {
var value = 1;
this.increase = function() {
value = value + 1;
};
this.getValue = function(){
return value;
};
}
var bar = new Bar();
bar.increase();
var value = bar.getValue();
console.log('value', value); -
fordfairlane
veterán
Nekem ez működik jól Firefoxban és Chromeban. Nem hibás a html markupod, vagy nem lehet az, hogy a script előbb fut le, mint kéne?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
function valami() {
var btns = document.getElementsByTagName("button");
console.log(btns[0]);
}
window.onload = valami;
</script>
</head>
<body>
<button id="egy">gomb egy</button>
</body>
</html> -
martonx
veterán
-
Sk8erPeter
nagyúr
Hát ez csak akkor kell, ha a többi tartalmat AJAX-szal tölti be. Feltételezem, nem ez a helyzet, ha nem vágja a JavaScriptet, úgyhogy ez lehet, h tárgytalan.
http://www.openjs.com/scripts/dom/class_manipulation.php
itt van egy nagyon egyszerű addClass, removeClass, hasClass implementáció. Nem tanulmányoztam az esetleges bugjait, de nekem eddig bevált, ha plain JS-ben kellett ilyesmi.function hasClass(ele, cls) {
return ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
}
function addClass(ele, cls) {
if (!this.hasClass(ele, cls)) ele.className += " " + cls;
}
function removeClass(ele, cls) {
if (hasClass(ele, cls)) {
var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
ele.className = ele.className.replace(reg, ' ');
}
}ez alapján nem túl szép gyorsmegoldással ugyanaz:
de mondom, mindez valszeg most úgysem érdekes, legfeljebb egymás közt
-
Sk8erPeter
nagyúr
Eléggé úgy tűnik, a jsFiddle-nél kúrtak el valamit, konkrétan az embeddable.js-ben a switchTab metódus meghívásakor történik a hiba, szóval pont, amikor váltasz:
Unhandled Error: Cannot convert 'this.sections[index]' to object
Első megoldás hibajelzés a jsFiddle GitHub-oldalán.
-
fordfairlane
veterán
A HTML írja le a az oldal struktúráját, a CSS az oldal elemeinek megjelenését, a Javascript a viselkedést (amit aztán most már részben a CSS kezd átvenni). Ez a három rész három különböző aspektusa annak a valaminek, amit a felhasználó lát. Ezért is van rá háromféle jelölőnyelv, kettő deklaratív, egy pedig imperatív jellegű. És ezért érdemes három, egymástól elkülönülő részbe szervezni, és jól definiált interfészen keresztül kötni össze őket.
Az ilyen "separation of concerns" megközelítések akkor számítanak, ha a szoftver bonyolultsága meghalad egy szintet. Viszont sok szoftver indul egyszerűnek és aztán menet közben komplikálódik el, így ha valakinek ez nem jelent külön erőfeszítést, érdemes ezeket az elveket követni minden oldalnál a kezdetektől fogva.
-
martonx
veterán
Mert egy bizonyos szint felett tökéletesen átláthatatlanná, követhetetlenné teszi a kódot.
Debugolást, kód menedzselést is nagyban megnehezíti.Persze ezek mind olyan szempontok, amikkel egyszemélyes fejlesztők simán együtt tudnak élni, sőt ha nem tartják be ezeket a szempontokat, talán még gyorsabban is tudnak gányolni, mint ezen elvek mentén. Aztán persze két év múlva, meg 3 fejlesztővel 3 féle gányolási stílussal később, megy az átkozódás, mikor egy ilyen kódban bármin is módosítani kell.
Mondok egy példát. Van egy js függvényed, amihez hozzá kell adnod egy plusz argumentumot. Nem mindegy, hogy elég csak .js file-okban keresni, módosítani, vagy netán kismillió egyéb html-ben, php-ben, tpl, xsd-ben és még a jó ég tudja mi mindenben kell keresni. És mindez csak azért mert anno valakinek jobban kézreállt milliónyi onclick eseménybe belegányolni, ahelyett, hogy 1-2 rendes általános javascriptes eseménykezelőben kezelte volna le mindazt.
-
Sk8erPeter
nagyúr
Milyen "hivatalos irományt"?
Konkrétan kitől várnád ezt az irományt?
Kismillió ezzel kapcsolatos cikk, slide, egyéb van, ami összefoglalja, hogy a szemantikai keveredések miért rosszak MINDIG. Egyszerűen karbantarthatatlanná, tesztelhetetlenné és átláthatatlanná teszi egy idő után a kódot, nem beszélve arról, hogy mennyire ocsmány.
Egyébként a template-ezést sem véletlenül találták ki.De mutatok neked konkrétumot, ezt a slide-ot még régebben olvastam, könyvjelzőztem is, mert nagyon szemléletes, mindenképp fusd át, röviden, tömören, érthetően mutatja be leegyszerűsített példákkal, mit kerülj el
http://www.slideshare.net/fgalassi/refactoring-to-unobtrusive-javascript -
Sk8erPeter
nagyúr
Jaja, ez jó workaround, igazából annyi a trükk, hogy setIntervallal 25 milliszekundumonként rajzoltatja újra a képet, és 5 egységgel mozgatja a négyzetet ide-oda a kurzorgombok lenyomására.
De figyelj azokra a dolgokra, amiket martonx említett.(#3500) martonx :
jaja, ez tényleg gáz, sajnos sokszor a fejlesztők nem figyelnek oda a felesleges overheadre, ami így kicsiben lehet, hogy nem érzékelhető, de eleve igénytelenül programozni elég gáz.
Meg a cikk mondanivalója nem kicsit félrevezető ezzel az "Until I realized I could just use jQuery." mondattal, amikor ezek a dolgok jQuery nélkül is különösebb macera nélkül megoldhatóak, legalábbis nem itt jön ki a jQuery előnye, az is biztos. Igazából mi az, ami itt rövidíti a kódot? Legfeljebb az eseménykezelés rövidebb egy picit, meg nem írt document.getElementById('canvas')-t, ami valóban hosszabb, mint a $('#canvas'), de nagyjából itt meg is áll a dolog... a többi ergo pontosan ugyanannyiból összehozható plain JS segítségével.De hogy ne csak a szám járjon, itt van az egész plain JS-ben, különösebb erőlködés és jQuery nélkül:
http://jsfiddle.net/Sk8erPeter/b5sxk/
Kipróbáltam, működik Chrome-ban, Firefoxban, Operában.
-
martonx
veterán
Jó ez a bejegyzés, csak azt nem értem minek ehhez jquery? A blogoló megspórolt a jquery-vel pár karakternyi gépelést?
Ráadásul ez a 3 sor mennyire gáz már?
context = $('#canvas')[0].getContext('2d');
WIDTH = $('#canvas').width();
HEIGHT = $('#canvas').height();Szerencsére ez csak egy init-ben van, de 3-szor meghívni a css selectort?
var element = document.GetElementById("canvas")
context = element[0].getContext('2d');
WIDTH = element.width(); //nyilván plain js-ben nem így kell beállítani a szélességét egy elemnek, csak lusta vagyok
HEIGHT = element.height();Amúgy maga ez a canvas-ban rajzolásós, játék készítés tök jó dolog, bárcsak lenne időm ilyeneket csinálni
-
Sk8erPeter
nagyúr
Azért az legyen kiírva, hol hibáztunk, ez így nem túl informatív... (meg </br> >> <br />
Egy formban legyen submit típusú gomb, hogy Enterrel is el lehessen küldeni (különben így nem lehet). De submit gomból több is lehet egy formban, épp ezért a form onsubmitjára érdemes kötni a validálást, nem egy adott gomb onclickjére.(Ha csak billentyűzettel babrál, akkor nem biztos, hogy rá fog klikkelni a gombra.)
Amúgy meg a randa alert helyett jobb, amit írt, hogy egy error divbe írja ki a hibát.
-
Sk8erPeter
nagyúr
Nagyon nem szép megoldás akkor sem a szinkron (és NEM aszinkron
) hívás.
Amit írtál, az is átalakítható, ha megadsz egy callback-függvényre mutató pointert, úgy, hogy paraméterként azt is elvárod:Server.prototype.login = function(username, password, successCallback){
// .............
$.ajax({
// ............
success: successCallback,
// ........
});
// ......
}
function successSzarsag() {
// ide jöhet az, amit sikeres kommunikáció esetén szeretnél csinálni
}
$("#loginBtn").click(function(){
// ..........
server.login(uName, pwd, successSzarsag);
// ......
});Most ez csak gyorsan bepötyögött példa volt a kódod alapján, nyomokban hibát tartalmazhat, bár szerintem első ránézésre így működőképes.
Tényleg picit nehézkes átállni erre a gondolkodásra, erősen más megközelítést igényel, de érdemes végiggondolni, mert blokkolni a UI-t nagyon rossz megoldás.
-
Sk8erPeter
nagyúr
https://developer.mozilla.org/en-US/docs/HTML/Canvas/Tutorial/Basic_usage
Itt van a kulcsmondat a width és height attribútumok leírásánál a canvasra vonatkozóan, zárójeles megjegyzésként:
"The <canvas> element has only two attributes - width and height. These are both optional and can also be set using DOM properties. When no width and height attributes are specified, the canvas will initially be 300 pixels wide and 150 pixels high. The element can be sized arbitrarily by CSS, but during rendering the image is scaled to fit its layout size. (If your renderings seem distorted, try specifying your width and height attributes explicitly in the <canvas> attributes, and not with CSS.)"Hogy egész pontosan a CSS-beli megadás miért nem működik az elvártaknak megfelelően, azt nem tudom, de feltételezem, ez böngészőbeli implementáció kérdése, és jelenleg egyik böngészőben sem renderelődik a konkrét példa az elvártaknak megfelelően.
Érdekességként felfedeztem egyébként, hogy Operában hiába tartod nyomva a kurzorgombokat, nem fog arrébbmenni a vonal, csak akkor, ha egyesével nyomkodod őket. Ezzel a buggal (vagy feature?
) még nem találkoztam Operában. Bár gondolom most ez marginális kérdés, ha már marginális részesedésű böngészőről van szó.
-
martonx
veterán
Az async false erősen kerülendő, mert olyankor minden egyéb js futást fagyaszt (pl. js animációknál ez nagyon gáz tud lenni)!!!
Tudom nehezebb tisztán aszinkron megközelítéssel programozni, tegnap pl. nekem is erősen el kellett gondolkoznom, egy kliens oldali aszinkron hívásnál hiba esetén ismétlő logika megvalósításán (ami végül nem is lett bonyolult), cserébe nagyon megéri tisztán aszinkron programozni. -
Sk8erPeter
nagyúr
Jaja, ez így van, de arra figyelj oda, hogy az async paraméter jQuery 1.8-astól kezdve deprecated:
http://api.jquery.com/jQuery.ajax/"As of jQuery 1.8, the use of async: false with jqXHR ($.Deferred) is deprecated; you must use the success/error/complete callback options instead of the corresponding methods of the jqXHR object such as jqXHR.done() or the deprecated jqXHR.success()."
Érdemes átgondolnod, hogy biztosan jó-e az, hogy egy sima bejelentkezés miatt szinkronná teszed a kommunikációt, ha egyébként általában az oldaladon az aszinkron kommunikációt erősen használod: szerintem ebben az esetben sem indokolt. Hadd döntse el a felhasználó, szeretné-e megvárni, míg megkapja a választ a szervertől, addig meg tegyél ki neki egy töltődő ikont. Zavaró lehet, ha addig használhatatlan a felület. Vagy legyen hagyományos lap-újrafrissülős megoldás. Vagy használd a jQuery BlockUI Plugint (vagy egy hasonló megoldást).
Új hozzászólás Aktív témák
Hirdetés
- OLED monitor topik
- PlayStation 5
- Háztartási gépek
- Milyen autót vegyek?
- Egyre csak fejlődik az AI, emberek tízezreit rúgja majd ki a BT
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Sütés, főzés és konyhai praktikák
- Autós topik
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- További aktív témák...
- ÁRGARANCIA!Épített KomPhone i5 13400F 16/32/64GB RAM RX 7700 XT 12GB GAMER PC termékbeszámítással
- 120 - Lenovo Legion Pro 5 (16ARX8) - AMD Ryzen 7 7745HX, RTX 4070 (48 hónap garancia!)
- AKCIÓ! ASUS MAXIMUS VIII HERO Z170 chipset alaplap garanciával hibátlan működéssel
- Alkatrészt cserélnél vagy bővítenél? Nálunk van, ami kell! Enterprise alkatrészek ITT
- Bomba ár! Dell Latitude 5500 - i5-8GEN I 8GB I 256SSD I HDMI I 15,6" FHD I Cam I W11 I Garancia!
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged