Hirdetés

2024. május 3., péntek

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

(#4101) Sleed válasza Karma (#4100) üzenetére


Sleed
aktív tag

Erre a láncfűzésre tudsz írni egy egyszerű példát?
Amit linkeltél abban annyi minden van, hogy nem tudom belőle kihámozni :B

(#4102) Karma válasza Sleed (#4101) üzenetére


Karma
félisten

Nem véletlenül írtam privátot, hogy kifejtem bővebben :P

No de (hahaha), akkor következzen egy egyszerű példa a te feladatodra. Egy plusz modul kell hozzá, a when. Ott kezdődik a dolog, hogy a requestből készíteni kell egy olyan változatot, ami callback függvény helyett egy ígérettel tér vissza.

(Az ígéret egy olyan objektum, ami majd valamikor a jövőben fog kiértékelődni, vagy sikeresen, vagy nem. Mindkét ágra fel lehet iratkozni külön, és ha láncba fűzi őket az ember, akkor úgy viselkedik, mint a rendes függvényhívások - az eredmények lépésről lépésre átpasszolódnak, a hiba meg az egészet megszakítja.)

Szóval a request függvényt be kell foglalni (ezt csinálja a requestP függvény), utána mehet a lényeg. Bátorkodtam kicsit egyszerűsíteni a kigyűjtésen, ha már van a cheerionak is map függvénye.

var when = require('when'),
cheerio = require('cheerio'),
request = require('request');

function requestP(url) {
return when.promise(function (resolve, reject) {
request(url, function (err, res, body) {
if (err) {
return reject(err);
} else if (res.statusCode !== 200) {
err = new Error("Unexpected status code: " + res.statusCode);
err.res = res;
return reject(err);
}
resolve(body);
});
});
}

requestP('https://news.ycombinator.com')
.then(function (html) {
var $ = cheerio.load(html);

return $('span.comhead').map(function (i, element) {
return $(element).prev();
});
})
.then(function (articles) {
console.log(articles);
})
.catch(console.error);

“All nothings are not equal.”

(#4103) Karma válasza Karma (#4102) üzenetére


Karma
félisten

Szoktam még egyébként betenni plusz egy modult mindenhova, az underscore-t, amivel a tömb és objektumműveletek igencsak leegyszerűsíthetőek. A példádban például kezelhetőbbé teheti az eredményeket, ha a cheerio map, vagy az eredeti megoldásod helyett csak a számodra hasznos információt gyűjtöd ki a listába.

Ennyi változtatással:

var _ = require('underscore');

...

requestP('https://news.ycombinator.com')
.then(function (html) {
var $ = cheerio.load(html);

return _.map($('span.comhead'), function (element) {
var link = $(element).prev();
return { title: link.text(), url: link.attr('href') };
});

})
.then(function (articles) {
console.log(articles);
})
.catch(console.error);

A kimenet sokkal barátságosabb:

[ { title: 'Greed and the Wright Brothers',
url: 'http://www.nytimes.com/2014/04/19/opinion/nocera-greed-and-the-wright-brothers.html' },
{ title: 'Reactive UIs with React and Bacon',
url: 'http://joshbassett.info/2014/reactive-uis-with-react-and-bacon/' },
{ title: 'HMRC \'plans to share tax data with private firms\'',
url: 'http://www.bbc.co.uk/news/uk-27086401' }, ...]

[ Szerkesztve ]

“All nothings are not equal.”

(#4104) Zedz


Zedz
addikt

Sziasztok,

Hallottam arról, hogy lehetőség van asztali alkalmazást fejleszteni HTML, CSS illetve Javascript segítségével. Ebben van aki kicsit is tapasztaltabb itt? Eddig csak SDK-kat nézegettem, de igazából nem találtam értelmes leírást a témával kapcsolatban.

(#4105) trisztan94 válasza Zedz (#4104) üzenetére


trisztan94
őstag

Nagyon nem érdemes. Maximum, ha Win 8/RT-re akarsz, ott viszonylag jó.

Vagyis hát igazából attól függ. Ha nem natív nyelven fejlesztesz egy OS-re, akkor az lassabb lesz mindenképp (tehát windows esetén C++, C#, OSX esetén Objective C), mert van egy wrapper körülötte ami végül lefordítja arra (asszem, javítsatok ki, ha tévedek). Akkor lehet jó választás, ha Cross Platform appokat akarsz fejleszteni (lásd: adobe brackets), amit könnyű pluginezni.
De a brackets pl. pont a fent említett dolgok miatt nagyon be tud lassulni.

[ Szerkesztve ]

https://heureka-kreativ.hu

(#4106) Sk8erPeter válasza Karma (#4102) üzenetére


Sk8erPeter
nagyúr

"(Az ígéret egy olyan objektum, ami majd valamikor a jövőben fog kiértékelődni, vagy sikeresen, vagy nem. Mindkét ágra fel lehet iratkozni külön, és ha láncba fűzi őket az ember, akkor úgy viselkedik, mint a rendes függvényhívások - az eredmények lépésről lépésre átpasszolódnak, a hiba meg az egészet megszakítja.)"

JavaScript Promise-témában ECMAScript 6-os feature-ök kapcsán ezt a cikket olvasgattam múltkor, és igen jó:
JavaScript Promises - There and back again
http://www.html5rocks.com/en/tutorials/es6/promises/

Sk8erPeter

(#4107) Sk8erPeter válasza Zedz (#4104) üzenetére


Sk8erPeter
nagyúr

"Hallottam arról, hogy lehetőség van asztali alkalmazást fejleszteni HTML, CSS illetve Javascript segítségével"
Mi a célod? Ilyenkor azonnal felmerül a kérdés, hogy vajon biztos a jó nyelvekhez+eszközökhöz akarsz-e nyúlni.

Sk8erPeter

(#4108) Zedz válasza Sk8erPeter (#4107) üzenetére


Zedz
addikt

Fősulin van egy beadandó feladatom, és első körben egy weboldalt akartam írni erre a célra. Viszont találkoztam a Brackets kódszerkesztővel és kiderült, hogy ez is a webes nyelveket használva lett létrehozva. Szóval mint érdekesség lehet csinálnék valamit beadandónak, csak nem tudom például melyik SDK-t lenne érdemes használni. Olvasgatok épp most is a dolgok után, de egy kis iránymutatás jól jönne. :)

[ Szerkesztve ]

(#4109) Karma válasza Zedz (#4108) üzenetére


Karma
félisten

Nem csak a Brackets, hanem például a TileMill térképszerkesztő is tisztán Node.js alkalmazás. Ez utóbbi is open source, meg lehet nézni hogy mire épít.

Én egyébként a DeskShellről és a node-webkitről hallottam eddig.

(#4106) Sk8erPeter: Tényleg nagyon jó cikk, köszi :)

Egyébként az ECMAScript 6 terjedéséről mit lehet tudni? Azt olvastam, hogy a Node a 0.11.x-es ágon már támogatja, de stabilizálódni még nem akar... Pedig a generátorok nagyon odavernek.

Szívesen használnám már gyakorlatban például a co-t.

[ Szerkesztve ]

“All nothings are not equal.”

(#4110) Zedz válasza Karma (#4109) üzenetére


Zedz
addikt

Köszönöm, ezeknek most utána olvasgatok. :)

(#4111) Sk8erPeter válasza Karma (#4109) üzenetére


Sk8erPeter
nagyúr

"Egyébként az ECMAScript 6 terjedéséről mit lehet tudni? Azt olvastam, hogy a Node a 0.11.x-es ágon már támogatja, de stabilizálódni még nem akar... Pedig a generátorok nagyon odavernek."
Ez jó kérdés, én is csak ezt a táblázatot nézegettem:
http://kangax.github.io/es5-compat-table/es6/
pl. Promise konkrétan:
http://kangax.github.io/es5-compat-table/es6/#Promise
Egyébként túl sokat a dologról nem tudok.

Sk8erPeter

(#4112) martonx válasza Zedz (#4104) üzenetére


martonx
veterán

.hta kiterjesztéssel valóban lehetőség van windows desktop alkalmazás fejlesztésére.
Amit a telepített IE motor tud, azt a .hta alkalmazásod is tudni fogja. Elég jó dolog.
Win8 vonalon pedig metro alkalmazást is tudsz HTML5-tel csinálni.

Én kérek elnézést!

(#4113) Zedz válasza martonx (#4112) üzenetére


Zedz
addikt

Köszönöm, utána nézek ennek is! :) De gondolom akkor ez nem platformfüggetlen.

(#4114) Kommy


Kommy
veterán

Sziasztok!

Arra valakinek van ötlete, hogy hogyan tudnám megoldani, hogy van egy php fájlom, itt kiíratok php-val adatbázisból adatokat legördülő menükben (több van) és az lenne számomra a fontos, hogy melyik legördülő menüt húztam le, ennek a választásnak az adatával mennél tovább.

pl zöldsége, gyümölcsök, húsok a három legördülő menü és ha valamelyikből kiválasztom valamelyiket akkor annak a képét rakja ki

Tehát gyümölcsből kiválasztom a körtét akkor a körte képe jelenik meg, tehát tudnom kéne melyik legördülőből melyiket választottam ki.
Ha a select-nek lenne egy fix "id"-ja akkor menne a következővel:
$("#id").change(function(){...}

(#4115) Jim-Y válasza Kommy (#4114) üzenetére


Jim-Y
veterán

Tudnál mutatni egy kis kódot? Mert ennyiből nem tudom, hogy mi a probléma, és szerintem más sem érti a gondod.

(#4116) Kommy válasza Jim-Y (#4115) üzenetére


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.

(#4117) Kommy válasza Kommy (#4116) üzenetére


Kommy
veterán

Kicsit módosítottam, rajta, most már nem a select-nek kell az id-ja, mivel az most már egységes

És ami a php-ban van mint kimenet:
<select name='track' id="champ">
<option champ= "id" id= "y" value="Érték">"Érték"</option>
</select>

Ígxy le tudom kérdezni, melyik a kiválasztott legördülő

$(document).ready(function() {
$("#track").change(function(){
var value=$(this).children('option:selected').val();
var valueid=$(this).children(':selected').attr("id");
var valuechamp=$(this).children(':selected').attr("champ");
$("#edit").load("result.php?q="+value+"&x="+valueid+"&f=1&c=0");
});
});

A mostani gond viszont az, hogy csak az első legördülőnél működik, ez miért lehet, a kódot a php generálja, sql lekérdezésekből tehát minden megegyezik bennük semmi eltérés.

(#4118) Kommy


Kommy
veterán

Lehet marad az , hogy a js-be írok több sor az azonosítókkal úgyis csak számok.

De miért van az, hogy kiválasztok 1-et, betölt aminek kell, kiválasztok mondjuk ugyan abból akkor már 2 szer tölt be és ahogy nyomkodom egyre többször fut le a js-ben az adott kódrészlet.

(#4119) martonx válasza Kommy (#4118) üzenetére


martonx
veterán

Szerintem ebben nem fogunk tudni segíteni neked. Így legalábbis biztos nem. Használj jsfiddle-t, ragadd ki az érdekesebb problémákat. De egy komolatt db - php - js problémát pár soros segítségkérések alapján varázsgömb nélkül senki se fog tudni neked megoldani.

Én kérek elnézést!

(#4120) Karma válasza Kommy (#4118) üzenetére


Karma
félisten

Kód híján annyit tudok mondani, hogy valószínűleg betöltéskor .click vagy .change (v. hasonló) hívással folyamatosan újabb és újabb eseménykezelőket aggatsz szerencsétlen HTML elementekre.

Ha központilag használnád az .on-t, nem lenne ilyen baj.

“All nothings are not equal.”

(#4121) Sk8erPeter válasza Kommy (#4116) üzenetére


Sk8erPeter
nagyúr

Szerintem az van, amit Karma említett, hogy az .on()-t kellene használnod, a selectek szülőelemére "aggatva", a selectekre szűrve az .on()-nak paraméterként megadott selectorral.
De amit SOHA többé ne csinálj (:DDD mert egészségkárosító hatású), az a (#4117) azonosítójú hsz.-edben látható, és ROSSZ, NAGYON ROSSZ:
var value=$(this).children('option:selected').val(); // BORZALMAS
var valueid=$(this).children(':selected').attr("id"); // NE CSINÁLD
var valuechamp=$(this).children(':selected').attr("champ"); // ROSSZ

Tudod, hogy van, amikor egy ilyet leírsz, akkor az egy kismacska életébe kerül.

Totálisan feleslegesen futtatod le újra és újra ugyanazt a metódust, ráadásul egymás alatt:
$(this).children(':selected')
--> ennek az értékét tárold el egy VÁLTOZÓBAN, arra találták ki. Ugyanarra az elemre hivatkozol.
Tehát a fentit cseréld le valahogy így:
var $self = $(this);
var $selectedElement = $self.children('option:selected')
var value=$selectedElement.val();
var valueid=$selectedElement.attr("id");
var valuechamp=$selectedElement.attr("champ");

a lényeg: a többször használt elemeket tárold el változó(k)ban, ne kérd le őket újra és újra, mert erőforrás-igényes, még ha nem is veszed észre.

[ Szerkesztve ]

Sk8erPeter

(#4122) Kommy válasza Sk8erPeter (#4121) üzenetére


Kommy
veterán

Köszönöm mindenkinek a segítséget.

(#4123) CSorBA válasza Sk8erPeter (#3908) üzenetére


CSorBA
őstag

Most jött el a kérdés ideje ezzel a hozzászólással kapcsolatban :)

Azt vettem észre, hogy click eventnél ez teljesen jól működik, viszont scroll esetében valamiért nem fut le, csak direktben pakolva. De az pedig ugye nem lesz jó a később behozott elemek esetén..

Itt a példám: [link] Mi a gond a scrollal?

[ Szerkesztve ]

(#4124) CSorBA válasza CSorBA (#4123) üzenetére


CSorBA
őstag

Mármint gondolom azért nem fut le, mert a scroll nem bubblingol, ezt hogy tudom mégis megcsinálni?

(#4125) martonx válasza CSorBA (#4124) üzenetére


martonx
veterán

Érdekes, hogy nem működik .on-nal a scroll, a click meg igen. Szvsz semmi köze ahhoz, amit feltételezel, ki kellene próbálni plain js-sel, lehet hogy ez csak valami jquery hiba. Simán működnie kellene: példád letisztítva és a lényegre koncentrálva

Én kérek elnézést!

(#4126) Zedz


Zedz
addikt

Sziasztok!

Canvassal vannak problémáim. Van ez a kódom.

És ezt a hibaüzenetet dobja: Uncaught IndexSizeError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0.

Pedig a kép elérési útja is jó, illetve ha egy kép URL címét adom meg ami egy szerveren van, akkor sem lesz jó. Mi lehet a baja? :(

(#4127) trisztan94 válasza Zedz (#4126) üzenetére


trisztan94
őstag

Nem lehet, hogy még nem töltötte be a képet, de már le akarja kérni az adatait? Próbáld az onLoad()-ba rakni a getImageData()-t és az alatta lévőt.

https://heureka-kreativ.hu

(#4128) Zedz válasza trisztan94 (#4127) üzenetére


Zedz
addikt

Sajnos így sem jó. :(

Szerk.: ez segített. :)

[ Szerkesztve ]

(#4129) dokee78


dokee78
félisten

Mi blokkolhatja a gépemen a Java-t?
Tűzfal/vírusírtó tuti nem,mert engedélyezve van bennük.
Chrome és Firefox alatt is.
Egyébként Windows 7 a rendszer.

(#4130) Jim-Y válasza dokee78 (#4129) üzenetére


Jim-Y
veterán

És ez, hogy jön a javascripthez? Inkább ez lesz a topikod: [link]

[ Szerkesztve ]

(#4131) dokee78 válasza Jim-Y (#4130) üzenetére


dokee78
félisten

Oda is feltettem,segítettek is.

(#4132) Jim-Y


Jim-Y
veterán

Aki szokta használni a Sublime-ot, az esetleg lesse meg ezt is, a héten lett elérhető.
https://github.com/atom/atom

(#4133) trisztan94 válasza Jim-Y (#4132) üzenetére


trisztan94
őstag

Már egy ideje elérhető, nekem már úgy 2-3 hete fent van.

https://heureka-kreativ.hu

(#4134) Sk8erPeter válasza Jim-Y (#4132) üzenetére


Sk8erPeter
nagyúr

(#4135) Jim-Y válasza Sk8erPeter (#4134) üzenetére


Jim-Y
veterán

Hónapokkal ezelőtt már én is néztem, de akkor csak OSX-re lehetett feltenni...

(#4136) martonx


martonx
veterán

Jelzem, ma este kijött a Visual Studio 2013 Update 2 is, ami a Web Essentials pluginnel kiegészülve már majdnem WebStorm magasságba emeli a VS-sel is a webfejlesztést.

Én kérek elnézést!

(#4137) trisztan94 válasza Jim-Y (#4135) üzenetére


trisztan94
őstag

Ja azt nem vágtam, hogy van Win kliens is azóta, én OSX-re raktam fel.

(#4136) martonx

:C

https://heureka-kreativ.hu

(#4138) fordfairlane válasza trisztan94 (#4137) üzenetére


fordfairlane
veterán

A win kliens az újdonság. Eddig leginkább csak OS X alá volt.

x gon' give it to ya

(#4139) trisztan94 válasza fordfairlane (#4138) üzenetére


trisztan94
őstag

Igen, közben leesett :)

Nem rossz amúgy, de nem fogom használni. Ott van nekem a Sublime meg a Brackets (mostanában inkább Sublime, sokkal gyorsabb, egyszerűbb kezelni szvsz), komolyabb melóra pedig IDE (Netbeans, Visual Studio, ha úgy adódik). Tehát igazából nem értem, hogy miért csinálták ezt, direkt kompetense akar lenni a Bracketsnek, ami már eléggé kiforrott.

https://heureka-kreativ.hu

(#4140) Siriusb válasza trisztan94 (#4139) üzenetére


Siriusb
veterán

Mármint konkurenciája ;)

(#4141) trisztan94 válasza Siriusb (#4140) üzenetére


trisztan94
őstag

Igen, erre gondoltam, késő volt már :DDD

https://heureka-kreativ.hu

(#4142) Jim-Y válasza Karma (#3981) üzenetére


Jim-Y
veterán

Szia. Most sikerült erre visszatérnem.

Leszedtem a példád, írtam hozzá egy klienst, de az a gond, hogy a szerverre eljut az információ
{ name: "akarmi" } , tehát az akarmi eljut a szerverig, sikerül meghívni a wsdl alapján a metódust, de kliens oldalra már nem jut vissza a válasz, ott mindig undefined-ot olvasok :/

Most pont ezen vagyok, hogy ezt kijavítsam. Szerintem a wsdl-ben kéne mókolni.

(#4143) kemkriszt98


kemkriszt98
aktív tag

Sziasztok, van egy weboldalam ahol van 4 képem (3 kicsi 1 nagy) némi js segítségével megoldottam, hogy mindíg az a kép jelenjen meg nagyba amire ráviszem az egeret ( onmouseover-el). Az én gépemen megy is de ha átmásolom más gépre vagy otthoni szerverre akkor másnak nem. Ha haza megyek kódot is de addig is nincs valami ötletetek?

"Tigris, tigris, csóvafény éjszakáknak erdején, mily kéz adta teneked szörnyü és szép termeted?" -William Blake-

(#4144) Sk8erPeter válasza kemkriszt98 (#4143) üzenetére


Sk8erPeter
nagyúr

Kód nélkül tök felesleges elkezdeni tippelgetni. :)

Sk8erPeter

(#4145) fordfairlane válasza kemkriszt98 (#4143) üzenetére


fordfairlane
veterán

A képek elérési útja nem jól van megadva, mert mondjuk abszolut URL-ek vannak benne, a meghajtó betűjele, ami másik gépen már nem működik. Esetleg a képeket nem másoltad fel.

x gon' give it to ya

(#4146) kemkriszt98 válasza fordfairlane (#4145) üzenetére


kemkriszt98
aktív tag

Nem mert kicsibe megjelennek, csak mintha a js nem menne de mivel több gépen is kipróbáltam így nem tudom mi lehet :) de akkor haggyuk, 2 óra múlva jövök a kóddal .

"Tigris, tigris, csóvafény éjszakáknak erdején, mily kéz adta teneked szörnyü és szép termeted?" -William Blake-

(#4147) martonx válasza kemkriszt98 (#4146) üzenetére


martonx
veterán

A js elérési útja van rosszul megadva?

Én kérek elnézést!

(#4148) Sk8erPeter válasza martonx (#4147) üzenetére


Sk8erPeter
nagyúr

Szerintem tényleg nem érdemes tippelgetni, mert lényegében akármit elkúrhatott. :DDD Én pont ezért el se kezdtem agyalni, pedig volt pár ötletem, de minek töltsem az időmet vele, hogy lepötyögjem őket, amíg ő sem írta körül jobban. :)

Sk8erPeter

(#4149) kemkriszt98 válasza martonx (#4147) üzenetére


kemkriszt98
aktív tag

Nem mert nem külön fájlban van, de itt a kód :)

"Tigris, tigris, csóvafény éjszakáknak erdején, mily kéz adta teneked szörnyü és szép termeted?" -William Blake-

(#4150) Jim-Y válasza kemkriszt98 (#4149) üzenetére


Jim-Y
veterán

Hú-ha, hogy te ezért mit fogsz itt kapni :D Nem írunk így javascript kódot!

Itt van egy alap cucc kiindulásnak, hogy hogyan kellett volna inkább:
http://jsbin.com/tusunami/1/edit?html,js,output

Nincs időm utánajárni, de biztos van jobb megoldás mint a képek url-jét cserélgetni.

Copyright © 2000-2024 PROHARDVER Informatikai Kft.