- Luck Dragon: Asszociációs játék. :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- gban: Ingyen kellene, de tegnapra
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- 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
- eBay-es kütyük kis pénzért
- Gurulunk, WAZE?!
- Archttila: SMART tesztelés automatizálva: smartctl poller script Zsh-ban, RPi-re
- btz: Internet fejlesztés országosan!
-
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
-
fordfairlane
veterán
Tehát a lista úgy néz ki, hogy első oszlop "elemSzám" {4789} (ezt az egy elemet tartalmazza), második oszlop "aktév" {2016} (ezt az egy elemet tartalmazza) ennyi a lista (2 oszlop, 1 sor). Feladat: Kiolvasni az évszámot és ha nem egyezik a jelenlegi évszámmal akkor az "elemSzám"-ot visszacsökkenteni 1-re, az évszámot pedig javítani az aktuális évre. Tehát ez a kód évente csak 1* kell, hogy lefusson.
Időközben am megoldottam a problémát azzal, hogy találtam egy megoldást, hogy egy .update-en belül írjam át mind a két értéket és nem kell két külön update-et létrehozzak. Viszont ugyanebben a kódban eredetileg volt még egy ID generálós rész is, ahol ezt a két értéket felhasználva hoztam létre az ID-t. Ennek a résznek a frissítést követően kellett volna lefutnia, viszont ezt nem tudtam elérni, hogy megvárja, mindenképpen egyszerre akart lefutni, így végül kénytelen voltam egy másik eseményhez hozzárendelni. Ez ugyan jelenleg megoldotta a problémát, de a jövőben biztos, hogy lesznek esetek amikor, nem lehet így kicselezni a sorrendet. Tehát a kérdésem az lenne, hogy ha feltesszük, hogy a korábban linkelt kódom megfelelően működik, akkor, hogyan és hová kéne hozzáírnom az ID generálós részt, hogy biztosan az esetlegesen bekövetkező frissítést követően olvassa csak ki a rekordokat?
Én csak azt nem értem, hogyha, a mostani leírásod alapján, egy lista van, azon egy elem, ami két mezőből áll, egyik a számlálót, másik az évet tartalmazza (és ez így teljesen logikus), akkor hogyan működött az eredeti kódrészleted úgy, hogy néha az egyik update futott le, néha a másik. Az eredeti kódrész ugyanis két külön listára hajt végre két külön updatet.
Egyre zavarosabb ez az egész már nekem, asszem kiszállok ebből. Öregszem vagy nem tudom, mi...
-
fordfairlane
veterán
Igazad van félre néztem. Viszont azt a hibát csak akkor írtam bele, amikor próbáltam átjavítani a neveket a postoláshoz, hogy könnyebben emészthetőek legyenek, bocsi. Tehát az összes lista hivatkozás a "TargetList"-re vonatkozik. Tudom esetleg szerkeszteni vhogy a régebbi postomat?
A where-el kapcsolatban pedig nem probléma, ha az összes mezőt frissíti mivel csak 1-van minden oszlopban. Lehet, hogy igazából el is lehetne hagyni, csak nem tudom, hogy akkor alapértelmezett ként az összes mezőt átírná-e vagy sem azt még tesztelnem kell.
Illetve azóta már kicsit beleástam magam a témába és úgy tűnik, hogy a jquery alapból asszinkron hajtódik végre. Így nem igazán várják meg egymást az utasítások, amik sorban következnének. Valószínűleg ebből származhat a probléma, bár jelen esetben valójában mind1, hogy melyik update hajtódik végre hamarabb a kódban, azért továbbra sem világos, hogy végül miért csak az 1-ik mező értékét frissíti.
Illetve azóta már kicsit beleástam magam a témába és úgy tűnik, hogy a jquery alapból asszinkron hajtódik végre.
Egyrészt az aszinkron végrehajtás nem a jquery jellegzetessége, hanem a javascript engineké, másrészt nincs ellenőrizetlen aszinkronitás. A két update nem várja meg egymást, de a többi sorban, egymás után kerül végrehajtásra (jól is néznénk ki, ha nem így lenne) és ez elvileg nem okozhat problémát, mivel két, egymástól független listaelemen(elemein) hajtódik végre. Ennek elvileg működnie kéne, ezért kérdeztem rá a háttérben levő dolgokra.
A where-el kapcsolatban pedig nem probléma, ha az összes mezőt frissíti mivel csak 1-van minden oszlopban. Lehet, hogy igazából el is lehetne hagyni, csak nem tudom, hogy akkor alapértelmezett ként az összes mezőt átírná-e vagy sem azt még tesztelnem kell.
Hogy érted azt, hogy egy mező van minden oszlopban? Úgy érzem, keverednek a fogalmak.
Hány elem (rekord) van ezeken a listákon (táblákban)? Az elemek hány mezőből (oszlopból) állnak?
-
fordfairlane
veterán
Szia!
Ez a kód egy részletete egy ID generálásnak. Az ID pedig úgy néz ki, hogy: (felhasználók által létrehozott elemek száma + "./" + aktuális évszám).
Azért van a feltétel vizsgálat mert csak akkor kell a rekordokat frissíteni ha a rekordokban szereplő évszám és az aktuális évszám nem egyezik (nem is kell az updateben felhasználni csak az update szükségességének megállapításához kell), mivel ebben az esetben frissíteni kell az aktuális évszámot, illetve le kell vinnem a létrehozott elemek számát 1-re. (Az egész esemény akkor hajtódik végre ha a user a Save gombra kattint).
Tehát azért van 2* a "Targetlist" mert az elsőnél csak beolvassa és a 2.nál pedig frissíti is ha szükséges. És igen a where feltételek jelzik, hogy az oszlopok mely mezőit kell frissíteni, jelen esetben mivel csak 1 mezőből állnak ezt az 1 mezőt targetelik ki a where-k. Sharepointpluszban csak where-el lehet targetelni elemeket egy oszlopban vagy pedig ID-val.
Amennyiben nincsen új év simán csak a elemek számát updateli +1-el, de mivel nem ezzel van a probléma, hanem azzal, hogy amikor 2 updatelést kéne végezni egymást követően, csak az egyiket végzi el, nem akartam ezzel is bonyolítani a megértést.
Továbbra sem egyértelmű az adatszerkezet. Az eredeti hozzászólásban egy listát írtál, két oszloppal, a kód viszont két külön listát updatel. Méghozzá where feltételekkel updatel, nem ID-val, ami azt eredményezi, hogy függetlenül attól, hány elem (rekord) van az adott listán, egy lépésben az összes olyan listaelemet frissíteni fogja a megadott listán, amelyekre teljesül a where feltétel.
-
fordfairlane
veterán
Sziasztok!
Sharepoint listához írtam egy javascriptet. Elvileg az lenne a rendeltetése, hogy ha betöltődik az oldal ellenőrzi az évszámot és ha esetleg megváltozott az utolsó betöltés óta, akkor egy másik listának 2 mezőjét módosítsa. A kód gyönyörűen fut azzal a kis problémával, hogy teljesen random, hogy a 2 mezőből éppen melyiknek a módosításához van kedve. Hol az egyiket írja csak át, hol a másikat. Sajnos nem értek javascripthez, de úgy érzem, párhuzamosan ugrik rá a két feladatra és végül csak a gyorsabb hajtódik végre. Tudtok esetleg vmi gyógyírt, hogy szép sorban menjen végig a feladatokon vagy ha más a probléma, akkor mi az? A módosítandó lista összesen 2 oszlopból áll melyekben mindössze 1-1 elem van. Íme a kód:
$(document).ready(function() {
$SP().list("TargetList", "http://.../sites/Registry/").get({
fields: "actualyear", //Listából beolvassa az ott jegyzett évszámot
}, function getData(data) {
for (var i = 0; i < data.length; i++) {
//itt hasonlítja össze, hogy változott-e az évszám
if ((Number(data[i].getAttribute("actualyear")) < (Number(new Date().getFullYear())))) {
$SP().list("TargetList", "http://.../sites/Registry/").update({
actualyear: Number((new Date()).getFullYear()) //frissül az évszám (vagy ez hajtódik végre)
}, {
where: "actualyear < " + Number((new Date()).getFullYear()),
});
$SP().list("AdriaPostaSzamLista", "http://.../sites/Registry/").update({
lastnumber: Number("1") //újévkor 1-re változik a sorszám mező (vagy ez)
}, {
where: "lastnumber > " + Number("1")
});
}
}
});
});A megvalósításhoz Jquery és Sharepointplus-t használok.
Hálásan köszönök minden ötletet a javításra!
Nem értek a Sharepointhoz, de itt valami nagyon nem stimmel.
Ha jól látom, van egy lekérdezés Targetlistről, és két külön update. Egyik a TargetListre, egy meg valami másikra. Minek van a lekérdezés, meg az "if" feltételvizsgálat, ha az update statementek "where" feltételében ott van, hogy mik azok a rekordok, amiket módosítani kell? A lekérdezés eredménye sehol nincs felhasználva az updateknél.
-
fordfairlane
veterán
Az OO remek találmány, de a Javascript (ES6, typescriptről nem tudok nyilatkozni) classokkal sok probléma van.
1. Maga az osztály teljesen felesleges, ha csak egyetlen példányt kell belőle gyártani. Csak egy újabb felesleges absztrakció.
2. Ha több példányt kell csinálni, akkor sincs rá szükség, ha nem használod a típusellenőrzést (Ha típuskonvertálást használsz, az meg valószínűleg tervezési hiba), Javascript alatt simán factory functionnel tudsz objektumokat sorozatgyártani.
3. Javascript alatt a new operátor (illetve az elhagyása) problémás a dinamikus this binding miatt.
4. Javascript alatt a class csupán syntactic sugar, ugyanaz a behavior-delegation van a háttérben, mint class nélkül, construktor functionnel a protottype-ra ráhúzott metódusoknál. Persze a class összeszedettebb szintaxis, de ugyanúgy működik (pl. menet közben átdefiniálhatsz metódusokat).
5. Az öröklés, mint OO kódújrafelhasználás súlyosan problémás módszer, különösen akkor, ha felülbírálsz metódusokat, és nem a SOLID elveknek megfelelően.Hirtelen ennyi jut eszembe.
-
fordfairlane
veterán
En mint eddig csak React-et ES6-al hasznalo ember nem ertem miert irod ezt? Szamomra sokkal atlathatobb az egesz. Legtobbszor mikor ES5-t kellett hasznalni inkabb hagytam az egeszet. Nyilvan jobban tudod miert mint en, mint mondottam nem vagyok topon ezen a teren. De szeretnem megtudni miert mondod ezt.
Csak az osztályba rakásról eszembe jutott Douglas Crockford véleménye a ES6 osztályokról. Én messze nem vagyok olyan képzett a formális nyelvekben, de tényleg valahogy ritka "ugly" konstrukciók.
-
fordfairlane
veterán
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
}
});Le a classokkal! Osztályharcot hirdetek az osztályok ellen!
-
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.
-
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.
-
fordfairlane
veterán
Értem hogy sima js lesz belőle és a hasznos dolgok nagyrésze el is tűnik. Azt reméltem hogy van valami compiler paraméter amin átsiklottam ami automatikusan hozzátenné a típus ellenőrzéseket.
Lényegében akkor minden egyes class esetén típusellenőrzést ugyanúgy meg kell csinálni minttha vanilla js lenne, illetve ha felhasználom egy másikban, akkor példányosítani kell. Valahogy így mint lent. (tudom hogy rossz példa) Vagy van jobb megoldás?
class Name {
name:string
constructor(str:string) {
if (typeof str !== 'string') {
throw new TypeError()
}
this.name = str
}
}
class Age {
age:number
constructor(n:number) {
if (typeof n !== 'number') {
throw new TypeError()
}
this.age = n
}
}
class Person {
name:Name
age:Age
constructor(i:IPerson) {
this.name = new Name(i.str)
this.age = new Age(i.n)
}
}
interface IPerson {
str: string,
n: number
}
console.log(process.argv[2])
let bar:IPerson = JSON.parse(process.argv[2])
let foo = new Person(bar)
console.log(foo)Typescripthez nem értek, de az instanceof talán ebben az esetben is használható.
-
fordfairlane
veterán
van egy jelszó vizsgáló scriptem, amibe szeretnék még beletenni egy olyat is, hogy a szóközöket is levágja az elejéről és a végéről
eddig jutottam el:
function jelszoEll(){
var urlap = document.forms['urlap'];
//nem kezdődhet számmal
var jelszo = urlap['pwd'].value;
var jelszo2 = jelszo.trim();
var hibaHelye = document.getElementById('jelszoErr');
if (jelszo == jelszo.toLowerCase())
hibaHelye.innerHTML = "A jelszó nem tartalmaz nagybetűt!";
else hibaHelye.innerHTML = "";
}de sajna így nem vizsgálja helyesen szóközt
plusz kellene még bele..számot vizsgáló rész is..Életemben nem láttam még ennyire elcseszett if vezérlési szerkezet-formázást. Ilyenért buktatnék.
![;]](//cdn.rios.hu/dl/s/v1.gif)
-
fordfairlane
veterán
Látszik, rég nem typescripeztem. Ha "elrontod" az importot, hibát dob?
-
fordfairlane
veterán
-
fordfairlane
veterán
Hmmm, forEach, hogy ez nekem miért nem jut sosem eszembe...

Ecmascript 5 óta van. Mondjuk 2009-ben lett belőle szabvány, szóval nem mai gyerek.
Egyidős a beépített JSON objektummal. -
fordfairlane
veterán
Sziasztok!
Van egy zenei API, ami JSON responseokat küld, és ezt szeretném feldolgozni pure-JS segítségével (azaz JQuery stb. nélkül).
Odáig megvan a dolog, hogy a JSON.parse() fügvény segítségével kreálok egy json nevű objektumot, majd a következő módon ki is tudom nyerni az első dal címét:
songTitle = json.collection[0].track.title;
alert(songTitle);Viszont nekem arra lenne szükségem, hogy a címek egy tömbbe kerüljenek.
Ti hogyan oldanátok meg a dolgot?
Köszönöm a válaszokat!

var titles = [];
json.collection.forEach(function(item) {
titles.push(item.track.title);
});
console.log(titles); -
fordfairlane
veterán
A második nekem is. De az első nem, hiába az element-nek a documentet adtam meg.
Viszont van egy addeventlistenerem egy másik js fájlba, az nem érzékeli ezt a touchcancel-t csak azt amelyiket a browser indít el automatikusan.Ennél ti mit adtatok meg az element-nek?
var event; // The custom event that will be created
if (document.createEvent) {
event = document.createEvent("HTMLEvents");
event.initEvent("dataavailable", true, true);
} else {
event = document.createEventObject();
event.eventType = "dataavailable";
}
event.eventName = "dataavailable";
if (document.createEvent) {
element.dispatchEvent(event);
} else {
element.fireEvent("on" + event.eventType, event);
}Nekem erre nyomja a hibát, hogy az element nincs deklarálva, én a következőt adtam meg:
element = document.getElementsByTagName('body');
De erre meg azt írja, hogy a dispatchEvent nem egy függvény.Én a documentet adtam meg az element helyett. A bodyt is meg lehet adni, document.body. A getelementsbytagname collectiont ad vissza, abból előbb még ki kell választani az elemet. Akkor is, ha csak egy van belőle.
-
fordfairlane
veterán
-
fordfairlane
veterán
Nem teljesen. Pl. itt egy másik ahol egy képet leíró attribútumok name és value tulajdonságait kérdezik le. Nekem hasonló kellene, csak a <script> kódon belül a var változók azonosítóinak lekérésére...
Ennyit találtam:
Ez csak a globális változókat listázza ki, nem az összeset. Az összes változót nem lehet kilistázni. Továbbra sem értem, miért ilyen fontos ez, milyen problémának a megoldásához kell változóazonosítókat listázni.
-
fordfairlane
veterán
-
fordfairlane
veterán
Köszi! Kezd alakulni...
Közben csak kiszenvedtem amit eredetileg akartam, egy leegyszerűsített mankó példán.
Lehet hogy szakszerűtlen profi szemmel, de én csak amatőrködöm saját szakállamra.
Más: egy változó identifierjét hogyan kérdezhetjük le?
(pl. szükségem volna avar kategória = ...kódból a "kategória" stringre.)Más: egy változó identifierjét hogyan kérdezhetjük le?
(pl. szükségem volna a var kategória = ... kódból a "kategória" stringre.)Inkább azt írd le, hogy mit szeretnél megvalósítani. Gondolom nem egy Javascript interpretert.
-
fordfairlane
veterán
Nézegetem ezt a példát most rá ismerkedés gyanánt, de nálam vmi nem kóser.

Ez a tutorial egyszerűen szörnyű. A JSON nem objektum, hanem egy nyelvfüggetlen szövegalapú adatcsere-formátum, ami a javascript object-literal szintaxis szűkített változata. Amit te keresel az az ún. object literal, és az array-literal.
Object literal:
var a = {
key1: value,
key2: value,
key3: value
};value bármi lehet, amit változóba lehet tenni, másik objektum, tömb vagy függvény is.
Array literal:
var arr = [value1, value2, value3, value4];Az értékek itt is lehetnek akármik, amik egy értékadás jobboldalán szerepelhetnek, tehát akár objektumok vagy függvények is. Tömbnél a kulcsok numerikus növekvő értékek lesznek.
Javascriptben az objektumok egyszerű konténerek, amik névvel azonosítható propertyket tartalmaznak. A property értéke lehet akár tömb is. A tömbök is hasonlóképp tartalmazhatnak bármilyen elemet, így objektumokat és tömböket kvázi tetszőlegesen ágyazhatsz egymásba.
Ha a kettőt kombinálod:
var a = [
{
key1: [
{
key1: value
},
{
key1: function() {}
}
],
key2: [1, 2, 3]
},
{
key1: ["string1", "string2"],
}
]; -
fordfairlane
veterán
Tényleg nem tudom hová tenni a dolgot. Nem tusok sokat a Typescriptről, de tudtommal az object abban is object.
Ha jelen esetben auth.userProfile egy object, és van neki egy username nevű property-je, elvileg teljesen mindegy kell hogy legyen az, hogy dot notation vagy bracket - subscript notation-nel próbálod elérni. Még abban az esetben is, ha nem sima propertyről van szó, hanem getter-setter függvényről.
-
fordfairlane
veterán
Remek, akkor lehet tudsz segíteni.

Adott 1 komponens és 1 service. A service, ami a userről tárol dolgokat, így néz ki (ami nekünk most fontos):
@Injectable()
export class Auth {
//Store profile object in auth class
userProfile: Object;
constructor() {
// Set userProfile attribute of already saved profile
this.userProfile = JSON.parse(localStorage.getItem('profile'));Ezt a userProfile objectet szeretném felhasználni egy komponensben, aminek a constructora így fest:
constructor(private auth: Auth, private authHttp: AuthHttp, private router: Router) {
this.username = auth.userProfile['username'];
}Kérdés:
A komponens HTML kódjában simán tudok hivatkozni a username-re a következőképp: {{ auth.userProfile.username}}.Akkor a constructorban miért ['username'] módon érem a kívánt értéket?
Javascriptben auth.userProfile['username'] és auth.userProfile.username ugyanazt jelenti, csereszabatos.
-
fordfairlane
veterán
Sziasztok!
2 függvény futtatására lenne szükségem késleltetve. Ezzel a megoldással próbálkoztam, de így csak az első fele fut le (az átirányítás):
javascript:
window.setTimeout(function red()
{window.location="https://www.xy.nz";},5000);
window.setTimeout(function elf()
{document.getElementById("radio").checked=true;
document.getElementById("rad2").checked=true;
document.getElementById("Form").submit()},6500)()Amit el szeretnék érni: a script indítása után 5 másodperccel irányítson át az xy.nz oldalra (eddig működik), majd már az átirányított oldalon 6,5 másodperc után fusson le a többi része a scriptnek.
Mit csináltam rosszul, hogyan kéne jól?
Nem tudom, hogy ez kivitelezhető-e egyáltalán.Köszönöm!
Bookmarklettel ez nem lehetséges, ehhez már extension kell. [link]
-
fordfairlane
veterán
Közben leszűkült a probléma, már csak az automatikus gomb kattintásban kérnék segítséget, mert ezt nem tudom összehozni valamiért. (Az oldalhoz csak mint külső felhasználó férek hozzá).
Ezzel próbálkoztam, de nem működik.
javascript:(function(){document.getElementsByClass("emg-button emg-btn-huge btn-submit").click;})()A kérdéses gomb, amit le szeretnék "klikkelni" az alábbi képen van kijelölve:

Hogy tudnám ezt kivitelezni?

Talán így műkszik:
javascript:(function(){document.getElementById("summaryForm").submit();})() -
fordfairlane
veterán
Sziasztok!
Az miért van, hogy ez az egyszerű kis kód minden böngészőben fut, kivétel Safari és Internet Explorer?<html><head><title></title></head><body bgcolor=#222222 onload="Getdata()">
<script>
var szaml = 0;
function Getdata(){
szaml ++;
document.getElementById("egy").innerHTML = 123;
document.getElementById("ketto").innerHTML = 456;
document.getElementById("harom").innerHTML = szaml;
document.getElementById("negy").innerHTML = szaml+1;
setTimeout('Getdata()', 500);
}
</script>
<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<text id="egy" x="10" y="30" style="font-size: 20; fill:#ffffff">xx</text>
<text id="ketto" x="10" y="50" style="font-size: 20; fill:#77ff99">xx</text>
<text id="harom" x="10" y="70" style="font-size: 20; fill:#ff4499">xx</text>
</svg>
<br><Font id="negy" size= "4" color="#aaaaaa">xxx</Font><br>
</body></html>Ebben a két böngészőben az SVG részen belül a text-hez nem tudja hozzárendelni az értéket? Vagy mitől lehet?
Az inline svg részleges támogatottsága lehet az oka:
-
fordfairlane
veterán
Még mindig nem értem, miért ilyen elképesztően fontos ez a globális változó, mintha anélkül nem lehetne programot írni.
-
fordfairlane
veterán
Adatokat szeretnék kinyerni egy HTML kódból, aki dinamikus és egy szerveren futó php rakja össze.
Pl időjárási adatokat szeretnék leszedetni és feldolgozni.
A többit meg már elmondtam. Lehet bármilyen a function, csak getPage('url');-lel lehessen meghívni és a DATA globális változóban adja vissza a html kódot. A kód nár működött xhr-rel, böngészőben, de a node -on nem akar menni a jóöreg xhr.
A http csomag szerintem ebben a formában sohasem fog működni, úgy nézem, egyáltalán nincs szinkron üzemmódja. Vagy használj más csomagot, pl. az említett http-syncet, vagy ne így dolgozd fel a kapott kódot, hanem egy calbackben, vagy promise resolveban.
-
fordfairlane
veterán
Mert ugyanolyan nevű globális változót használsz a függvényen belül objektumreferencia tárolásra, mint ami a függvényed neve.
function addSchool() {}ugyanaz, mint
var addSchool = function() {}A function-on belül első hívásnál az első sor a függvény referenciáját felülírja, így másodjára már nem tudod meghívni.
-
fordfairlane
veterán
Az mitől van, hogy van egy függvényem, amiben ennyi van:
function addSchool() {
addSchool = document.getElementById('add-schools');
schools = document.getElementById('schools');
schoolList = document.getElementById('school-list');
}Ezt egy onClick eseményre tettem. Amikor elsőnek rákattintok, probléma nélkül lefut. Mikor másodjára kattintok akkor ezt a hibaüzenetet kapom:
Uncaught TypeError: addSchool is not a functionMert ugyanolyan nevű globális változót használsz a függvényen belül objektumreferencia tárolásra, mint ami a függvényed neve.
-
fordfairlane
veterán
Már működik
Durva, hogy egy ilyen kicsi probléma így bekavart... Múltkor pl azt figyeltem meg, hogy ha lehagyok egy pontosvesszőt, akkor addig lefut a program, de tovább már nem.Ezt az F12-t majd fogom használni, amint rájövök, hogyan kell

Milyen kódolásra kell állítani a szöveget, hogy ne ezt kapjam?:
A megadott szám: 3
A megadott számmal oszthatĂł szmáok összege egytĹ‘l ezerig: 166833Esetleg az előfordulhat, hogy egyes böngészőkben nem fog valami rendesen működni? (Különösen Edge+ARM-es változatok.) Egyenlőre még Notepad++t használok, majd holnaptól ez változni fog

Amennyire láttam, a ++i előbb ad egyet i-hez, és "utána engedi i-t használni", míg az i++ "előbb használja i-t (pl írja ki) és csak utána növeli meg eggyel." i+++ van?
<meta charset="utf-8">Ezt rakd be a nyitó <head> után.
Ezt az F12-t majd fogom használni, amint rájövök, hogyan kell

F12, megjelenik az egész dev toolbar. Kiválasztod a konzol fület, ott látod a különféle hibajelzéseket is. Ha javascript hiba van, akkor így tudod a leggyorsabban kideríteni. Nincs itt semmi varázslat. Ez kábé ugyanaz Firefox, Chrome és IE11 alatt is.
Esetleg az előfordulhat, hogy egyes böngészőkben nem fog valami rendesen működni?
Ez a kód működni fog mindenféle böngészően, nem olyan bonyolult ez.
Amennyire láttam, a ++i előbb ad egyet i-hez, és "utána engedi i-t használni", míg az i++ "előbb használja i-t (pl írja ki) és csak utána növeli meg eggyel." i+++ van?
nem egészen, de for ciklus esetén mindegy, hogy pre- vagy postinceremnt van a léptetőkifejezésben. Nincs i+++; Négy kereszttel sincs.
-
fordfairlane
veterán
Előttem szóló kollégához annyit tennék hozzá, hogy nem
.js-ben, hanem.html-ben menteném le.A böngésződ a
head-be rakottscripttagből tudni fogja, hogy ott egyjavascriptkódot kell futtatnia, viszont a js fájl nem fog tudni neked az általad írt formában<html>,<head>, meg<body>tageket megjeleníteni.Meg a
forloopban++ihelyetti++-t szoktunk használni, mert:
http://stackoverflow.com/questions/6867876/javascript-i-vs-iMeg a for loopban ++i helyett i++ -t szoktunk használni, mert:
Mert?
-
fordfairlane
veterán
Még egy kicsit emésztenem kell a leírtakat, amihez idő kell. Sajnos továbbra sem működik a program. Elmentettem .js-ben, azt írta, az első sor első karaktere hibás

Belinkelem az egész kódot (berakom a hszbe*), mert máshol is lehet benne hiba nem csak az elején, és nem csak szintaktikai, de alapvetően annyi segítségre lenne szükségem, hogy a promptig működjön. És egyenlőre böngészőben futtatott offline program a cél, nomeg a tanulás..<html>
<head>
<script type="text/javascript">
var n=prompt('A számok összege egytől ezerig, melyek oszthatók ezzel a számmal:');
var szamokosszege=0;
while(!isFinite(n)){
n=prompt('A számok összege egytől ezerig, melyek oszthatók ezzel a számmal:');
}
document.write('A megadott szám: ', n , <br />)
for(var i=1;i<=1000;++i){
if(i%n==0){
szamokosszege+=i;
}
}
document.write('A megadott számmal osztható számok összege egytől ezerig: ', szamokosszege);
</script>
</head>
<body>
</body>
</html>Azt a kódoló programot sem tudtam még kipróbálni. Válasszal ráértek

Szerk.: így megnézve a hszt, az első html nem piros, hanem fekete. (Azért használok pl prompt-ot, mert videóban ezeket láttam. De majd áttérek a beviteli mezőre
)document.write('A megadott szám: ', n , <br />)helyett
document.write('A megadott szám: ', n , '<br />')Használd a böngésző developer-tooljait, F12. Egyből kitette nekem, hogy melyik sorban van a hiba, így már gyorsan megy a dolog.
-
fordfairlane
veterán
Sziasztok!
Nemrég én is elkezdtem foglalkozni a nyelvvel, (első nyelvem.. freepascalt tanultam lazarusban egy hónapig, vagyis mondhatjuk, hogy kezdő vagyok..), és nagyon megtetszett.
Van egy magyar oktatóvideó-sorozat, illetve pár külföldi oldal, azokon nézegettem, hogyan is működik a Javascript. Alapvetően az a problémám, hogy nincs rendesen elmagyarázva, miben is érdemes programozni, ezért Notepad++ban kezdtem el. Tegnap írtam is egy programot, ami kiírta, mennyi 3*5 és 3+5

De letöröltem. Ma megpróbálkoztam valami mással, de az a baj, hogy nem igazán működik. Kizárt, hogy a kóddal van a baj, mert a
var n=prompt('valamilyen szöveg')-re be kéne kérnie n-t, de a program indításánál egy fehér oldal fogad, és semmi...
Szóval nem tudom, mit csinálhatok rosszul. A <script> és hasonlók megvannak.. Html-be van mentve a fájl, talán ez a baj?
Esetleg lehagyhattam valami pontosvesszőt? Ez a másik kérdés, notepad++ tud szintaktikai hibákat ellenőrizni? Hol?
Vagy valami letiltódhatott a böngészőkben tegnap óta? (Többen is kipróbáltam.)
Mint láthatjátok, kezdő vagyok, de.. segítség kell

Ez nem off, nyugodtan hagyhattad volna feketében. Ha valami nem működik egy általunk összerakott oldalon, akkor manapság az első mozdulat a F12 használata legyen a böngészőben. Ez hozza elő a developer toolbart, ahol mindenféle eszközt találsz a hibakereséshez. Első körben nézd meg a console-t, ír-e valami javascript hibát.
-
fordfairlane
veterán
Pontosan. A success attribútumra be kell lőni egy függvényt, ami a kapott válasszal csinál is valamit. Egyébként a jquery load metódusa ebből a szempontból egyszerűbb.
<!DOCTYPE html>
<html lang="hu">
<head>
<meta charset="utf-8">
</head>
<body>
<div id="target"></div>
<script src="//code.jquery.com/jquery-3.1.0.min.js"></script>
<script>
$("#target").load("localhost/test2.php");
</script>
</body>
</html> -
fordfairlane
veterán
Csináltam hozzá egy html részt is, igen. Tehát egy html fájlként, ahol a headben van <script>-ként a JS, majd egy buttonnal futtatom a function-t onClick-kel.
Ja és Firefoxot használtam. Egyébként nekem nagyon tetszik a végeredmény, szóval ha webszerveren is lehetne futtatni, akkor az nagyon jó lenne!
Ezt használom egyébként jelenleg:
var DATA = '';
function getPage(url){
var http = new XMLHttpRequest();
http.open("GET", url, true);
http.send();
DATA = http.responseText;
}A kódodban az XmlHttpRequest objektum open metódusában a harmadik paraméter true. Ez azt eredményezi, hogy aszinkron módban akarod használni. Ilyenkor az utána következő send metódus azonnal visszatér, nem várja meg a szerver válaszát. Vagy használd szinkron üzemmódban, vagy úgy használd, ahogy az én példakódomban.
1. new-val példányosítasz
2. onreadystate-re beállítod, hogy a response-nál mi történjen.
3. open(method, url, async)
4. setRequestHeader, amennyiben szükséges
5. sendÉs ha már functiont használsz, inkább a visszatérésben szerepeljen a responsedata, ne globális változóba tedd.
-
fordfairlane
veterán
-
fordfairlane
veterán
-
fordfairlane
veterán
Egy sima POST request küldése pár sorból megoldható, mindenféle framework nélkül.
var req = new XMLHttpRequest();
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
// Ebben van a valasz: req.responseText;
}
}
req.open("POST", "submithandler.php", true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.send("var1=data1&var2=data2&var3=data3");A Fetch API-val meg még egyszerűbb.
-
fordfairlane
veterán
Sziasztok!
Egy nagyon egyszerű feladatom lenne, de nem akar összejönni, mert bénázom...

Tehát van egy Storages nevű tömböm, ami URL-eket tartalmaz. Mindegyik tag 1 db-ot és a tagok száma változó. Namost, ezt ki kéne iratnom egy alertbe, egybe az egészet, mégpedig úgy, hogy az url-ek előtt legyen egy szám, majd maga az url, és egy sortörés, majd ismét egy szám, aztán url, sortörés...
Pl:
1 https://drive.google.com
2 https://dropbox.comNah, ezt úgy gondoltam egy mezei for ciklussal meg tudom oldani, de nem megy az a rész, ha már meglévő StoragesList változómhoz hozzáadjam a következő sort.
Ezt próbáltam:
for(i = 1; i <= Storages.length; i++){
StorageList = StorageList+i+' '+Storages[i]+'\n';
}Illetve próbáltam a StorageList = StorageList+i+... helyett a StorageList += i+...-ot is, de nem működött... Tudnátok helpelni?
Köszi! 
<script>
var Storages = ['https://drive.google.com', 'https://dropbox.com'], StorageList = '', i;
for(i = 0; i <= Storages.length - 1; i++){
StorageList += String(i + 1) + ' ' + Storages[i]+'\n';
}
alert(StorageList);
</script> -
fordfairlane
veterán
fordfairlane-nel értek egyet, ezek a kulcsszavak egy kezdőt szerintem is inkább elrettentenek, mint kedvcsinálónak számítanak, elkezd ezekre guglizni, és akkora zsongás lesz a fejében (mondjuk már eleve a kulcsszavaktól is), hogy lehet, hogy azt fogja érezni, hogy ezt inkább hagyjuk (jó, mondjuk egy komoly elhivatottság eleve kell a minőségi programozáshoz). Az általad felsoroltak közül van olyan, amikről nekem is csak felületes tudásom van, már ha annak nevezhető, igaz, most épp nem a webfejlesztés van terítéken esetemben, hanem csak hobbi, de azért le tudok ülni megoldani egy JavaScriptes feladatot, gondolom azért ez csak lejött.
Először tényleg angolul kell megtanulnia (ezt Te is írtad), aztán programozói alapszemléletet elsajátítani (nem biztos, hogy JavaScripten keresztül kellene, de fogalmam sincs, mi a leginkább működő módszer, pl. a C nyelv kezdésnek kissé erős lehet, mégis pl. BME-n ezt nyomatják elsőre), majd tök alapvető dolgokkal megismerkedni a JavaScripten belül - pl. épp azt, hogy mi is az a DOM, milyen módon tudja alapszinten manipulálni a HTML-elemeket, stb. Eleinte nem szükséges minden olyan ismeret, ami a pár-/sokéves tapasztalatból neked kapásból előugrik. Legyen némi sikerélménye, amiből tovább építkezhet (ami azt hiszem, nagyon fontos ahhoz, hogy legyen kedve folytatni). Amikor kezdő voltam programozásból, én is azt éreztem, hogy a haladók vagy profik ritkán tudnak csak visszaemlékezni (vagy nem is akarnak) arra, hogy ők honnan is kezdték. Érted, ha elkezdesz tanulni angolul, akkor sem a past perfect continous-zal kezded.Azóta se jelentkezett. Lehet, beleásta magát a javascript rejtelmeibe.

-
fordfairlane
veterán
-
fordfairlane
veterán
Szép estét!
Van egy tömböm. Mindegyik tagjának értéke egy https://<urlcim>/<kep>.jpg?<hosszuszamsor> link (ami <>-k között van, az mindig változik (dinamikus)).
Namost, van arra mód, hogy az összes esetben a https://-t lecseréljem http://-re? For-ral egyenként, a szokásos i+1 (amíg az érték kisebb/egyenlő, mint a tömb legutolsó száma) meg tudtam csinálni, de ha van rá gyorsabb megoldás, akkor annak örülnék!

Köszi!
Gyorsabb? Mondjuk ha nem tennéd bele az url-be a https-t, és nem cserélgetnéd. Csak miután kiolvasod a megfelelő értéket a tömbből, akkor fűznéd az image url elejére a megfelelő protokollt.
-
fordfairlane
veterán
Amúgy amit akartál, nem túl bonyolult

<html>
<body>
<p>The push method appends a new element to an array.</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits;
function myFunction() {
var demo = document.getElementById("demo");
demo.innerHTML = fruits + ",";
var d = document.createElement("SPAN");
d.style.color = "red";
d.innerHTML = "Lemon";
demo.appendChild(d);
fruits.push("Lemon");
}
</script>
</body>
</html>Ezzel a megoldással az a gond, hogy nem a tömb tartalmát jeleníti meg, hanem a meglévő elemek mögé kirajzol egy újabb elemet pirossal. Ezek után ennek az új elemnek csupán a szövegét hozzáadja a tömbhöz. Na de ha nem a tömb tartalmát jeleníti meg, akkor minek hozzáadni az utolsó elemet? Vagy pont ez volt a cél, hogy mindig újra hozzáadja azt az elemet, és csak az a legutolsó kell pirossal?
-
fordfairlane
veterán
Az írások minősége eléggé hullámzó, vannak kifejezetten rossz példák és tanácsok. Összességében szerintem nem vészes, de a Mozilla Developer Network jobb, naprakészebb. Persze angoltudás az kell mindenféleképpen.
-
fordfairlane
veterán
Ja értem, szoval akkor ne vegyük komolyan a "jelentkezőt"/kérdezőt? Én csakis úgy segítettem neki mint amennyire én is örülnék neki ha valaki nekem segítene fordított esetben. Most érted, a legjobb tudomásunk szerint segítünk neki, ellátjuk hasznos anyagokkal, akár még többel is mint amire szüksége van, de felnőtt ember, el tudja dönteni, hogy a sok forrás közül neki mire van szüksége, mire van ideje stb. Inkább legyen miből választania, minthogy olyan választ kapjon, hogy ---> http://lmgtfy.com/?q=google
Ezek egyike sem kezdő téma, totál haszontalan számukra. Komolyan, megkérdezi, hogy mit kell tudnia a DOM-ról, és azt kapja, hogy "callback hell", meg "IIFE" ? Véges halmazok meg gráfelmélet az már smafu?
-
fordfairlane
veterán
Lejárt:
Ezekről kéne tudni, hogy mit jelentenek

ES5 Array methods
Closure
Events / Event handling
bind
Callback
Error first style
Callback hell
Promises / Deferreds
IIFE
editorconfig, jshint, strict mode
js unit testing, jasmine, karma
== vs ===
automatic type coercion
typeof, {}.prototype.toString
prototypal inheritance, mixin inheritance
apply, call vagy ES6 -> restparams, spread op.
passing a function object as a reference to another function -> event handlers
ajax
localStorage, sessionStorage
devTools
data-bindingCsak ismerni:
frameworks (Angular, Ember, Backbone, React+Flux, Meteor)
isomorphismPersze, meg doktoráljon le formális nyelvekből, mielőtt megírná az első 10 sort meghaladó programját.
Jön egy kezdő tanácsot kérni, és beterítitek annyi anyaggal, amit nyugdíjaskoráig sem tanul meg. És még komolyan is gondoljátok, hogy ez a helyes módja megtanulni programozni.
-
fordfairlane
veterán
-
fordfairlane
veterán
-
fordfairlane
veterán
Hú micsoda flame-et indítottam el a js kritikámmal

Szerintem egyébként két irány van jelenleg js fejlesztésben, és szemmel láthatóan az újabb irány kerekedett felül a régin. Azaz js-el eddig jellemzően frontenden fejlesztett az ember egyszerűbb, kisebb cuccokat. Az új irány pedig a js backenden használata akár nodejs-el, akár cross-platform app-ok írásával.
Fordfairlane és én nehezményezzük, hogy frontend vonalon kb. semmit nem javult a js, amivel jobban kézre állna, mint mondjuk 2 évvel ezelőtt. Viszont Zedznek is igaza van a nyelv tagadhatatlanul fejlődik, csak éppen backend felhasználási irányba. Ha frontend felől nézzük kb. éppen leszarósak az osztályok, generátorok, ellenben hány éve várja az ember, hogy ne kelljen kiírni, hogy document.getElementById("akármi"), hanem csak kb. $("#akármi"). Vagy ne 4 sort kelljen írni egy minimalista ajax-os get híváshoz.
Nyilván változik a világ, és a nyelvek próbálják lekövetni az új trendeket.
Nem tudom, hogy kliens- vagy szerveoldali-e ez a dolog, de ezt a béna arrow szintaktikát felesleges túlzásnak tartom csupán arra, hogy a this-t másképp kezelje. Az, hogy meg lehet vele takarítani pár karakter begépelését a function() {}-hoz képest, az nekem nem szempont.
-
fordfairlane
veterán
Minek fejlesztik egyáltalán a nyelvet?

Nem tudom más hogy van vele, de nekem kényelmesebb mindkét megoldás a mostani helyett, gyorsabban tudok haladni vele, és átláthatóbb a kód. Hangsúlyozom, hogy mindez egyéni meglátás, és ha még rajtam kívűl így gondolják páran, akkor már megérhette megcsinálni.
Nyilván vannak hibái a nyelvnek, nem tökéletes, de ez kicsit a "kákán a csomót" effekt. De nem válaszoltál, hogy milyen fejlesztéseket várnál? Az egyszerűbb XHR kezelést már említettük.

Mitől kényelmesebb az arrow szintaxis? Egy nyelvidegen katyvasz a hagyományos javascript szintaxissal összevetve.
-
fordfairlane
veterán
A generátorokat nagyjából értem vagy érteni vélem, hogy mire jók, de én spec egyik munkám során sem éreztem a hiányukat.
-
fordfairlane
veterán
-
fordfairlane
veterán
-
fordfairlane
veterán
A Jqueryből sok minden át lett emelve a DOM-ba, de amint látható, pl. az AJAX-kezelés még nem az igazi.
-
fordfairlane
veterán
Főleg ha CDN-ről jön, akkor optimális esetben már be is van cachelve és onnan használja a böngésző. Abban viszont egyetértek a kollégákkal, hogy ideje lenne már alapvető dolgot szabványba foglalni, mint mondjuk az egyszerűbb XHR kezelést. Bár mire az ES2015 teljes implementálása is megtörténik a mostani böngészőkbe, mi már lehet nyugdíjasok leszünk.

Bár mire az ES2015 teljes implementálása is megtörténik a mostani böngészőkbe, mi már lehet nyugdíjasok leszünk.
Pláne ha ennyi mindent raknak bele egyszerre, aminek a fele igazából fölösleges.
-
fordfairlane
veterán
Mintha számítana bármit is a jquery nemhasználata. Tipikus premature optimization.
-
fordfairlane
veterán
Próbálok kicsit játszadozni az osztályokkal, de valami nem kerek. [link]
var kocsi = function(name, ajtok, urtartalom) {
this.name = name;
this.ajtok = ajtok;
this.urtartalom = urtartalom;
this.nameUrtartalom = null;
this.setNameUrtartalom();
};
kocsi.prototype.setNameUrtartalom = function(){
this.nameUrtartalom = this.name + '-' + this.urtartalom;
};
kocsi.prototype.getNameUrtartalom = function(){
return this.nameUrtartalom;
};
kocsi.prototype.getAjtok = function() {
return this.ajtok;
};
kocsi.prototype.getName = function() {
return this.name;
};
kocsi.prototype.geturtartalom = function() {
return this.urtartalom;
};
var cabrio = function(name, ajtok, urtartalom, teto) {
kocsi.call(name, ajtok, urtartalom);
this.teto = teto;
};
cabrio.prototype = Object.create(kocsi.prototype);
cabrio.prototype.constructor = cabrio;
cabrio.prototype.getTeto = function() {
return this.teto;
};
var honda = new cabrio('S2000', 2, 1997, 'puha');
alert(honda.getName());
alert(honda.getNameUrtartalom());
alert(honda.getTeto());Ha nincs set metódus, akkor minden frankón megy. Ellenben ha a szülőben egy set metódust csinálok, akkor gyerek hibával elszáll. Jelen esetben a setNameUrtartalom-ra azt írja, hogy nem funkció. Mit rontok?

Tudom, használjak es6-ot...meg babel-t....
kocsi.call(name, ajtok, urtartalom);
helyett
kocsi.call(this, name, ajtok, urtartalom);
vagy akár
kocsi.apply(this, arguments);
-
fordfairlane
veterán
-
fordfairlane
veterán
Már megoldottam.
Nem. Van egy mappa. Ebben csak képek vannak. A listFiles a Taskerben valami ilyesmit ad vissza:
/Mappa/Kep1.jpg
/Mappa/Kep2.jpg
[…]Na nekem az az ötletem támadt, hogy nyomok egy splittet a \n-re, azaz a sortörésekre és ezt belementem 'i' -be. Ekkor ha pl a /Mappa/Kep1.jpg-t szeretném kiiratni, akkor az i[0] kell nekem. Tehát a tömb nulladik eleme. Namost ennek a tömbnek a lenghtje alapján generáltatok vele egy random számot. (Math.floor) Majd ezt a random számot állítom be háttérnek. Eddig működött a dolog. Viszont azt is szerettem volna, ha az előző háttér tömbbeli értékét ne sorsolja ki még 1x, illetve nulla se legyen az a szám, amit így kapok, erre kellett volna nelem a for. A for azt nézte volna meg, hogy az előzőleg "I" Taskeres globális változóval egyezik-e a most generált szám. Ha igen, akkor addig futtatja, míg más nem lesz a kapott eredmény. Csak közbe rájöttem, hogy az amit összedobtam több sebből vérzik. (Pl a setGlobal a forban
) Ezeket közben kijavítottam és while-ra cseréltem a for-t. Ezt sikerült összehozni, ami működőképesnek látszik:var Hatterek =listFiles("Hatterek", false).split("\n");
var number = Math.floor( Math.random()*(Hatterek.length));
while(number == global('OldScrBcg')) {
var number = Math.floor(Math.random()*(Hatterek.length));
}
while(number == 0) {
var number = Math.floor(Math.random()*(Hatterek.length));
}
setGlobal('OldScrBcg',number);
setWallpaper(Hatterek[number]);1. a var kulcsszót egyszer kell használni a number nevű változó esetében, mondjuk mikor először adsz neki értéket.
2. ha csak egy kép van, a while végtelen ciklust eredményez.
3. Ha number nem lehet nulla, mert a setWallpaper nem nullával indexeli a háttérképeket, akkor egyszerűbb a randomszám generálást úgy megírni, hogy egytől kezdődően dobjon számokat.Math.floor(Math.random() * (max - min)) + min;
azaz jelen esetben
Math.floor(Math.random() * (Hatterek.length - 1)) + 1;
4. Elég a while ciklusban randomszámot generálni, nem kell két Math.random sor.
Szóval ebben a formában valami ilyesmi célszerűbb:
var Hatterek = listFiles("Hatterek", false).split("\n");
var number;
if(Hatterek.length > 1) {
while(number == global('OldScrBcg')) {
number = Math.floor(Math.random() * (Hatterek.length - 1) + 1);
}
} else if(Hatterek.length == 1) {
number = 1;
}
if(number) {
setGlobal('OldScrBcg', number);
setWallpaper(Hatterek[number]);
} -
fordfairlane
veterán
Kezdőnek semmiképp nem ajánlanék ilyen leírást, ráadásul a jóég tudja hány ponton különbözik a Tasker féle javascript a szabványtól.
-
fordfairlane
veterán
Laikusként használhatnád a for-t úgy, ahogy a specifikációban szerepel.
for([inicializálás], [ciklus feltétel], [ciklus utasítás]) {
utasítás;
}Első ránézésre ez valami überh@xOr for ciklus, amiben nincs se feltételvizsgálat, se léptetés, és emiatt végtelen ciklussá válik.
-
fordfairlane
veterán
-
fordfairlane
veterán
Igen, csak mivel közben még másokat is kér le meg folyamatosan tölt fől ezért nem akartam, hogy ez a csatorna folyamatosan nyitva legyen.
A websocket ara való, hogy folyamatosan nyitva legyen, és mindkét irányban bármikor működjön a kommunikáció. Egyébként épp most fejlesztünk egy olyan rendszert, ahol a websocketen csak a trigger jel megy, ami jelez, hogy valami változás történt, maga az adatlekérés és visszaadás ajax hívásokkal működik.
-
fordfairlane
veterán
document.write()-ot értelmes ember nem használ.
![;]](//cdn.rios.hu/dl/s/v1.gif)
(#5714) Speeedfire:
Ilyenekre amúgy ott lenne a jsbin.com, ahova teljes kód felpakolható, ahonnan aztán lehet kopipasztázni, de most épp fogalmam sincs, miért nem üzemel egyáltalán.
Az elavult javascript anyagok szinte mindegyikére jellemző, hogy document.write-tal valósít meg kliensoldali dinamikus kódot, és ha oktatásról van szó, akkor az oktatónak, illetve vizsgáztatónak megfelelés legalább olyan fontos lehet, mint maga a tananyag. Ha nem fontosabb.
-
fordfairlane
veterán
Mondjuk ha valami ősrégi anyag alapján megy a js tanítás, akkor esetleg lehet az egész ciklus helyére tenni valami document.write -ot. A document.write-ba a teljes html-t bele kell pakolni. Valami ilyesmire gondolok, nem kidolgozva, csak hevenyészett pszeudokód szinten:
<div>
<script>
var i;
var napok = ["H", "K", "Sz", "Cs"];
var fokok = [2 3, 8, 5];
for(i = 0; i < napok.length; i++) {
document.write("<div>" + napok[i] + "</div>");
document.write("<div>" + fokok[i] + "</div>");
if(fokok[i] < 5) {
document.write("<img src='hideg.jpg'>");
} else {
document.write("<img src='meleg.jpg'>");
}
}
</script>
</div>Ez épp eléggé elavult módszer ahhoz, hogy megfeleljen az oktatási rendszer színvonalának.
-
fordfairlane
veterán
Csak aztán nehogy az legyen a probléma, hogy olyan technika van benne, amit nem tanultatok, és emiatt esetleg gyanús lesz. Igyekeztem a lehető legáltalánosabb DOM metódusokat használni.
-
fordfairlane
veterán
-
fordfairlane
veterán
Én ide írtam
for (var i = 0; i < napokHomerseklete.length; i++)
{
document.write(napokHomerseklete+" "); <==========
}
{
if (napokHomerseklete <= 5) {
idojarasClass = 'hideg';
} else {
idojarasClass = 'meleg';
}
currentElement = document.getElementsByTagName("td")(i);
currentElement.classList.add(idojarasClass);
}}
-
fordfairlane
veterán
Nem jut eszembe, hogy lehet úgy elemet használni, hogy nem frissíti a referencia objektumot, csak azt amit épp módosítok. [link]
Az utolsó console.log() eredménye is 11, pedig én azt "meg szeretném hagyni" eredetinek.
items.push(Object.create(obj));
-
fordfairlane
veterán
Itt a feladatleírás, lehet én értelmezek rosszul, de nekem ebből az jön le, hogy százalékosan kell megvalósítani azt amit akar.
Label ID-t tényleg megcseréltem, fáradt voltám már, valszeg azért nem szúrtam ki a dolgot.

(#5669) martonx: Erre most milyen választ vársz? Attól, hogy JS-hez még hülye vagyok attól még statikus oldalakat képes lehetek csinálni nem? Főleg, hogy kb mindennek le van írva, hogy mit hogyan. Plussz azért tanulom, hogy a későbbiekben tudjam. De amúgy érdekes, mert választ nem nagyon adtál a kérdésre.
u.i.: Módosítottam a kódot, így már nem közvetlen %-ban adom meg a méretet, hanem az eredeti méretet szorozgatom meg a tekergető által generált értékekkel, így jónak tűnik.
CSS-ben a százalékban megadott méret a tartalmazó elemhez képest relatív méret, nem pedig magán az img elemen.
-
fordfairlane
veterán
Sziasztok!
Milyen eseménykezelővel lehet egy input értéket validálni a mező elhagyásakor? Írj példakódot ami megvizsgálja hogy a mezőben 1 és 100 között szám van e?
Előre is köszi a segítséget.A change event input és textarea esetén a focus elvesztésekor aktivizálódik.
-
fordfairlane
veterán
A !x kifejezes nem azt jelenti, hogy x == false hanem
The production UnaryExpression : ! UnaryExpression is evaluated as follows:
Let expr be the result of evaluating UnaryExpression.
Let oldValue be ToBoolean(GetValue(expr)).
If oldValue is true, return false.
Return true.A ToBoolean a falsy ertekeket konvertalja boolean false-ra amit negalni fogunk true-ra. Tehat a !x az egy falsy check es ajanlott a hasznalata ha nincs szukseg explicit check-re.
felőlem
-
fordfairlane
veterán
-
fordfairlane
veterán
Az undefined azt jelenti, hogy az adott változónak nincs értéke. Itt szépen leírják, hogy mire is kell gondolni.
Ha egy kicsit lejjebb görgetsz, akkor látni fogod, hogy az if(x === undefined) az igazából ugyan az, mintha azt vizsgálnád, hogy if(!x).
Ha érdekel a JS akkor szerintem megéri rászánni egy kis időt, és elolvasni ezt a könyvet.
Ha egy kicsit lejjebb görgetsz, akkor látni fogod, hogy az if(x === undefined) az igazából ugyan az, mintha azt vizsgálnád, hogy if(!x).
Talán nem egyből a bad practice-nak megjelölt operátorokkal kellene kezdeni a JS okítást.
-
fordfairlane
veterán
A típuskonverzió == és != esetén elég furcsán lett implementálva a Javascriptben, ezért használata minden esetben kerülendő. A legtöbb programozó azért használja ezt az operátort, mert a többi C-forma nyelvekben nincs vele különösebb probléma, vagy nem ilyen mértékű. A Javascript specialitásai nem mindenki számára ismertek.
-
fordfairlane
veterán
Azért ide írtam, mert olyasmit olvastam, hogy a javascript nincs bekapcsolva és azért nem megy, de lehet, h félreértettem vmit. Nem vagyok szakember, csak átlag user.
Lényeg, hogy mikor feltelepítem a java-t és újraindítom a böngészőt és a honlapot fel kellene dobnia egy ablakot amin a java futattását kell engedélyezni. Na idáig el sem jut, nem dob fel semmit.Azért ide írtam, mert olyasmit olvastam, hogy a javascript nincs bekapcsolva és azért nem megy, de lehet, h félreértettem vmit.
Akkor is szoftverfejlesztői szekció.
-
fordfairlane
veterán
Nem a kezdőkkel van a baj, hanem az értetlenekkel, akik huszadjára sem fogják fel a mondanivaló lényegét.
-
fordfairlane
veterán
-
fordfairlane
veterán
A codecademy oldalon kezdtem a JavaScriptet tanulni, de itt elakadtam. A feladat, hogy kell egy function, ami kiszámolja 5 narancs árát, ami jelenleg 5 dollár. A gond az, hogy kétszer írja ki az eredményt. Hol hibáztam?
var orangeCost = function() {
var total = orange*5;
console.log("The price is "+total);
};
var orange = 5;
orangeCost();Nekem egyszer írja ki.
-
fordfairlane
veterán
Sziasztok egy teljesen kezdő kérdésem lenne.
Most kezdtem el ismerkedni a programozással de máris sikerült elakadnom. Adot a köv ciklus:
for (b=1; b<1000; ) {
document.write(b + ". sor" + "<br>");
a= prompt("irj egy szamot");
b = b + a;};
Megmondanátok, hogy a b = b + a miért nem adja össze a változók értékét? pl ha b=1, a=2 akkor 12 öt kapok 3 helyet.
Előre is köszi a segítséget!A prompt fv. stringként adja vissza a beírt értéket, így a + jel stringösszefűzést végez.
var a, b;
for (b=1; b<1000; ) {
document.write(b + ". sor" + "<br>");
a = prompt("irj egy szamot");
b = b + parseInt(a, 10);
} -
fordfairlane
veterán
Ha lehet használni netet, akkor szerintem olyan programozónak is illene ezt megoldani, aki még sose programozott webet
De mondjuk fejből lehet nekem is gondom lenne a html form pontos szintaktikájával. Mondjuk akkor jó eséllyel megoldanám ajax-al...Zedz:
Én amikor elkezdtem javascriptezni, szörnyű nyelvnek tartottam. De ahogy fejlődik a web, illetve az egész javascript rendszer, úgy szeretem meg egyre jobban. Ha lenne olyan állás, ahol csak js-ben kell programozni, nekem megfelelő városban lenne (ami nem Bp), vagy távmunkában végezhető lenne, akkor nagyon elgondolkoznék a váltáson
(ja és ha nem kérnek több éves node.js tapasztalatot, mert mindig rá akarom szánni magam, de pár soros pötyögésen még nem jutottam túl... ahol dolgozok ott teljesen kizárt a node.js alapú fejlesztés, szóval max hobbiból tudok vele foglalkozni)De mondjuk fejből lehet nekem is gondom lenne a html form pontos szintaktikájával. Mondjuk akkor jó eséllyel megoldanám ajax-al...
Te jó ég, hova kerültem.
![;]](//cdn.rios.hu/dl/s/v1.gif)
-
fordfairlane
veterán
BRENDAN: ... But long story short, there was an idea in JavaScript that I was pursuing, and maybe a few others saw it, too, of a language that wasn’t C-like. It was easy to use. It was meant for people who were building things inductively. They were learning programming for the first time. And they didn’t necessarily have to know where semicolons had to go, or even curly braces. I lost the curly brace front. On the semicolon front I said, “It’s ridiculous to reject a program because of a missing semicolon. We should do some kind of error correction procedure.” So, I made one up on the spot and that became automatic semicolon push.
[Laughter]
CHUCK: I kind of hacked this in and it stayed.
BRENDAN: Yup.
AARON: That’s awesome.
JOE: And 15 years later, people are still fighting over it.
JAMISON: That’s every programmer’s nightmare, right?
CHUCK: It’s so true.
JAMISON: Just the hack [inaudible] that you made.
AJ: I felt a sudden tremor in the force as if a thousand semicolons suddenly screwed up everything.
[Laughter]
BRENDAN: Yeah, there are definitely some issues there. But in fact, I remember Jamie Zawinski was writing some JavaScript and he had a long return expression so he put it on the next line with no semicolon after the return. And he was outraged that ASI would insert a semicolon after the return making the ‘return’ return the undefined value and the next line becomes dead code, a useless expression. It’s unreachable in the control flow of that function. He was totally outraged. [Laughs] But I said, “It’s too late. I can’t change it.” Once you ship things on the web, it’s very hard to change it.
Végighallgattam ezt az interjút, érdekes volt. Brendan Eich egyébként egy zseni.
-
fordfairlane
veterán
Gondoltam, hogy valamiért nem egyenlő, de nem tudtam rájönni miért.
Tipikus példa szokott lenni azt demonstrálandó, miért rossz dolog az Automatic Semicolon Insertion. Egyben felhívja a figyelmet arra, hogy a return használata esetén mire kell figyelni.
-
fordfairlane
veterán
Mostanában már kezd feltűnni a node.js tudás iránti igény az álláshirdetésekben. Általában előnyként van megjelölve, ami jelzi, hogy nem fő szerveroldali platformnak szánják, inkább csak kiegészítőnek.
-
fordfairlane
veterán
Hat, de ez azert eleg alap. Marmint..automatic semicolon insertion temaban ez a de facto pelda
Aki JavaScriptes allasra jelentkezik, es ezen elhasal az szerintem ne is jelentkezzen inkabb ilyen allasra. De amugy a jelenlegi valosag, hogy olyan emberek jelentkeznek "JavaScript expert" cimszoval akik nem tudjak pl, hogy mi a kulonbseg a == es a === kozott. True story :/automatic semicolon insertion temaban ez a de facto pelda
Bizony. [link]
-
fordfairlane
veterán
A JS-ben a function-object-prototype hármas működésének megértése a kulcs a haladó szinthez. Ha azt megérted, akkor a többi menni fog.
-
fordfairlane
veterán
Sziasztok.
Remélem jó helyen járok.
Az alábbi oldalon nektek megy a java?
[link]Hiába telepítem a java alkalmazást, nem akar menni. Se chrome, se mozilla, se explorer.
Ezt írja:
Nem megfelelő futtatókörnyezet
Ha ezt az oldalt látja, az azt jelenti, böngészője nem, vagy csak részben alkalmas az e-Jelentés rendszer futtatására.
A probléma oka: nincs engedélyezve a JAVA alkalmazások futtatása.
A hiba elhárításához kérjük vegye fel a kapcsolatot számítógépe rendszergazdájával, és kérje meg, engedélyezze az e-Jelentés weblapjáról származó JAVA alkalmazások futtatását.
7-es és 8-as Java Runtime-mal sem fut. Class not found exception.
-
fordfairlane
veterán
Mert egyszerubb, kevesebb a boilerplate, es nincs a wrappelessel jaro overhead.
Mert oke, ha peldaul van egy html5-os canvassal dolgozo jatekod, ahol mondjuk van egy Bullet objektumod, es a szervertol kapod meg az adatait, akkor egyertelmu, hogy csinalsz neki egy "osztalyt" es ugy kezeled az adatokat. De ha egy sima weblaprol beszelunk, ahol te jo esetben egyszer hivsz meg egy service-t, egyszer kered le a json objektumot, akkor nem fogsz a response-nak csinalni egy kulon osztalyt, mert az overhead.
akkor nem fogsz a response-nak csinalni egy kulon osztalyt, mert az overhead.
De nem is fogom klónozni csupán azért, hogy egy plussz propertyt hozzáadjak.
-
fordfairlane
veterán
Egy mostanaban eleg surun hasznalt REST+SPA alkalmazasban json objektumok mennek ide-oda a szerver es a kliens kozott, ilyenkor siman lehet az, hogy a szervertol kapott json objektumot kisse modositva klonoznod kell (akarmi miatt). Most te nem fogod mindig bewrappelni a json objektet egy JavaScriptes "osztalyba".
Object.create-s példát nem írok, az már ES5. -> es az miert baj?

ilyenkor siman lehet az, hogy a szervertol kapott json objektumot kisse modositva klonoznod kell
prototipikus öröklés helyett klónozás és módosítás? De az miért jó?

-
fordfairlane
veterán
Persze, a legegyszerubb nyilvan ez lenne:
var tesztArray = [],
tesztAdat = {
egy: null,
ketto: null
};
tesztAdat.egy = 1;
tesztAdat.ketto = 2;
tesztArray.push(tesztAdat);
tesztArray.push({
egy: 3,
ketto: 4
});
console.log(tesztArray[0] === tesztArray[1]);De sokszor szukseg van arra, hogy klonozz egy objektumot.
De sokszor szukseg van arra, hogy klonozz egy objektumot.
A jóég tudja, hogy itt szükség van-e klónozásra vagy. teszAdat, meg egy = 1; ez aztán marha sokat elmond, hogy mire kell ez az egész. Konstansokat meg értékeket bepakolni egy objektumba nem klónozás, hanem sima prototipus használat, vagy még annyi sem.
var testArray = [];
testArray.push({egy: 1, ketto: 2});
testArray.push({egy: 3, ketto: 4});vagy
var testArray = [], testAdat;
function testAdatConstuct(egy, ketto) {
this.egy = egy;
this.ketto = ketto;
}
testAdat = new testAdatConstuct(1,2);
testArray.push(testAdat);
testAdat = new testAdatConstuct(3,4);
testArray.push(testAdat);Object.create-s példát nem írok, az már ES5.
Ez nekem alap objektumkezelésnek tűnik.
-
fordfairlane
veterán
-
fordfairlane
veterán
"Mitől lenne már gyorsabb localStorage-en vagy bármin keresztül elérni, mint a változókhoz hozzányúlva?"
Miért ne lehetne gyorsabb? Nem tudhatod.
"Egyébként szerintem ennyi alapján simán elegendő lenne neked a localStorage is, csak sanszos, hogy rosszul használtad."
Miért? Mert leírtam, hogy mire használtam?
Ha két oldaltöltés közt akarsz állapotot eltárolni (ajax response-ok eredményét), azt sima változókban is megteheted. Ha újratöltődés után is akarsz adatokat elérni, még mindig egyszerűbb a szerveren tárolni sessionban, főként amiatt, mert a localStorage böngészőfüggő dolog.
Persze a localStorage-nak is meg van a létjogosultsága, de ahhoz ismerni kellene magát a megoldandó problémát.
-
fordfairlane
veterán
"Nem láttam se gyorsabbnak, se egyszerűbbnek, mint a js változókat."
Mitől lenne már gyorsabb localStorage-en vagy bármin keresztül elérni, mint a változókhoz hozzányúlva?
Egyébként szerintem ennyi alapján simán elegendő lenne neked a localStorage is, csak sanszos, hogy rosszul használtad.

Mivel nem tudjuk, hogy pontosan mit és miért tárol el, ezért az sem biztos, hogy storage jellegű a feladat. Az is lehet, hogy szimpla Angular model is elég lenne a state tárolásához.

-
fordfairlane
veterán
A kérdésem a következő lenne:

A kérdés: Ott van a 0 de az innerHTML mégis undefiniedet ad vissza. Miért? Nem értem, ezzel szenvedtem egész nap. Ha több kódra van szükség tudok még szolgáltatni.
A getElementsByClassName nem egy objektumot, hanem egy HTMLCollectiont ad vissza. For looppal végig kell menni rajta.
-
fordfairlane
veterán
-
fordfairlane
veterán
A lényeg itt tényleg roppant egyszerű, ha ua-ról az IP-ről refresh-elnek, akkor is számolódjon.
Csak egy "buta" kis számlálót szeretnék.MIt és hogyan csináljak?
Szerveroldalon kell számolni, az meg attól függ, milyen a kiszolgáló. Ha nem Javascript, akkor nem megoldható javascripttel. Sokkal egyszerűbb egy kész számlálót használni.
-
fordfairlane
veterán
Nem tudom emlékeztek-e, nemrég volt téma itt a topikban, a JavaScript the Weird Parts. Nem tudom, hogy ez ugyanaz-e vagy sem, de már az első bekezdésben kiverte a biztosítékot nálam: [link]
< x=[0]
> [0]
< x===x
> true
< x===!x
> false
< Array(3)===",,"
> falseNafene, akkor lehet mégiscsak user error?
![;]](//cdn.rios.hu/dl/s/v1.gif)
js> typeof null
"object"Ez mondjuk tényleg egy tervezési bug. Ez jogos. Illetve az is jogos, hogy a typeof és instanceof operator kicsit máshogy működik, mint ahogy azt az ember elvárná. De ez sem a nyelv hibája, csak max nem intuitív.
js> 0.1+0.2==0.3
falseMegint csak... ez nem a nyelv hibája, hanem max a tervezőjéé aki rossz ábrázolási metodikát választott, merthogy ez más nyelvekben is így van:
class NumberTest {
public static void main(String[] args) {
double a = 0.1;
double b = 0.2;
double res = 0.3;
System.out.println(a+b); // 0.30000000000000004
System.out.println(a+b == res); // false
}
}--------
js> Math.max()>Math.min()
falseEz megint mi, mintha az nézném, hogy console.log() > console.debug() ami mondjuk adna valami eredményt, én meg. Hűűűűű, na ez deszar.. -.-
---------
js> true+true===2
true
js> true-true===0
trueNa.. mégiscsak ismeri a === operátort? Meg amúgy is, ki az a hülye aki explicit össze akar adni két boolean értéket?! Mert mi legyen az eredmény? Gondolom true+true legyen true. De akkor mi legyen true+false? Most akkor ilyen helyzetben a '+' legyen egy bináris és, vagy egy bináris vagy?! .. mekkora hírhajhász az ilyen..

Van a nyelvben jópár hiba, de azokat Crockford már régesrég kivesézte, nekem annyi bőven elég. Ez a többi már csak prickwaving,
Ú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
- Fibocom L850-GL WWAN 4G LTE mobilnet kártya
- Alkalmi vétel! HP Omen 17! I7 12700H / RTX 3070Ti 8GB / 1TB Nvme SSD / 16GB DDR5 !
- 2000GB Gen5x4 NVMe SSD, 1 év gar GEN V!!! SK Hynix 2048GB PCB01 kb. 14GB/s / 12GB/s
- Lenovo Legion Slim 5 Ryzen 7 7840HS 16GB 512GB RTX 4060 OLED 120Hz 1év garancia
- Bomba ár! HP EliteBook 845 G9 - Ryzen 5 6650U I 16GB I 512SSD I 14,1" FHD+ I Cam I W11 I Gari!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


![;]](http://cdn.rios.hu/dl/s/v1.gif)

Egyidős a beépített JSON objektummal.













