ugrás a tartalomhoz

Mért csak az 1 sütivel kód működik?

vmarci21 · 2012. Szep. 21. (P), 15.56
A kérdésem a címben olvasható, tehát van egy js, ami a cookiekkel "szórakozik".
Az egész jó, egészen addig, amíg csak 1 cookie értékét akarom lekérni.

A kódok:

A süti létrehozásánál:
 <SCRIPT TYPE="text/javascript" LANGUAGE="javascript">
function adatlap() {
 document.cookie = ('cpu =' + document.adatok.cpu.value + '; expires=15/02/2021 00:00:00;');
 document.cookie = ('hdd =' + document.adatok.hdd.value + '; expires=15/02/2021 00:00:00;');
 document.cookie = ('memoria =' + document.adatok.memoria.value + '; expires=15/02/2021 00:00:00;');

 alert('köszönjük! Most már megtudhatod, hogy melyik program elfut-e a gépeden!');
 </script>
 <DIV id="adatlap" style="..."> 
 <noscript> engedélyezd a scripteket!</noscript>
 
 <form name="adatok">
 <input name="memoria" value="név1">
 <input name="cpu" value="név2">
 <input name="hdd" value="név3)">
 <input type="button" value="kész" onClick= "adatlap();">
</form>
(ez működik. Ami pedig lekéri, és nem működik:)


 function get_cookie ( memoria )
{
 var results = document.cookie.match ( '(^|;) ?' + memoria + '=([^;]*)(;|$)' );

 if ( results )
 return ( unescape ( results[2] ) );
 else
 return null;
}
 
 var memoria = get_cookie ( "memoria" );


function get_cookie ( cpu )
{
 var results = document.cookie.match ( '(^|;) ?' + cpu + '=([^;]*)(;|$)' );

 if ( results )
 return ( unescape ( results[2] ) );
 else
 return null;
}


function get_cookie ( hdd )
{
 var results = document.cookie.match ( '(^|;) ?' + hdd + '=([^;]*)(;|$)' );

 if ( results )
 return ( unescape ( results[2] ) );
 else
 return null;
}
 
 var hdd = get_cookie ( "hdd" );



if( hdd < $NÉV$ ) {
 alert('Ez a program nem fut el a gépeden: a te gépedeen lévő szabad hely:' + hdd + 'a program memóriaigénye: $NÉV$');
 }
 else {
 alert('Ez a program elfut el a gépeden: a te gépeden lévő szabad hely:' + hdd + 'a program memóriaigénye: $NÉV');


if( cpu < $NÉV$ ) {
 alert('Ez a program nem fut el a gépeden: a cpu-d:' + cpu + 'a program memóriaigénye: $NÉV$');
 }
 else {
 alert('Ez a program elfut el a gépeden: a te cpu-d:' + cpu + 'a program memóriaigénye: $NÉV$');
A $NÉV$ helyén egy szám van. A váéaszokat előre is köszönöm!
 
1

Felülírod

Poetro · 2012. Szep. 21. (P), 16.29
Az adatlap függvényben szintaktikai hiba van, nincs lezárva.
A get_cookie függvényt te felülírod. A hoisting miatt pedig a függvény felkerül a kódblokk tetejére, emiatt csak a hdd-s marad meg. Egyébként is teljesen felesleges 3 azonos függvényt csinálni.
Ezen kívül, azért ennél kicsit bonyolultabb sütit olvasni.

Csináltam neked egy kész megoldást, a süti olvasását / írását a quirksmode-ról vettem.
3

köszi

vmarci21 · 2012. Szep. 21. (P), 17.06
köszi, majd átnézem amit írtál.

(a süti olvasás működig, tehát azzal nincs baj, de csak akkor ha 1 van bennt, gondolom az általad írt felülírásos hiba miatt.)

Jaés köszi a példát! Sokat segítettél!
2

var expires = (new

Karvaly84 · 2012. Szep. 21. (P), 16.48

var expires = date.toUTCString(); // date instaceof Date
sztem ez a probléma, de tovább nem olvastam.
4

hogyan?

vmarci21 · 2012. Szep. 21. (P), 18.17
Na, ez nekem magas....

A süti olvasást én egy weboldalról vettem, szépen le volt vezetve mi, micsoda, és sikerült is megcsinálni, egészen a "memoria" részig, aztán hozzá raktam a hdd-t is, de így már nem működött. Az általad írt kódban nem nagyon látom, hogy hol tölti be a cookie-kat, így nem tudok vele mit kezdeni... ):

(tehát ez tesztelve van, biztos működik:)


 function get_cookie ( memoria )
{
 var results = document.cookie.match ( '(^|;) ?' + memoria + '=([^;]*)(;|$)' );

 if ( results )
 return ( unescape ( results[2] ) );
 else
 return null;
}
 
 var memoria = get_cookie ( "memoria" );
 

 
 if( memoria < $érték$ ) {
 alert('Ez a program nem fut el a gépeden: a te memória(ram)-od:' + memoria + ' a program memóriaigénye: $érték$');
 }
 else {
 alert('Ez a program elfut a gépeden: a te memória(ram)-od:' + memoria + ' a program memóriaigénye: $érték$');
 
 
 }
5

megvan

vmarci21 · 2012. Szep. 21. (P), 18.22
A weboldalt is megtaláltam: http://www.elated.com/articles/javascript-and-cookies/
8

Az általad írt kódban nem

Poetro · 2012. Szep. 21. (P), 21.47
Az általad írt kódban nem nagyon látom, hogy hol tölti be a cookie-kat
function readCookie(name) {
  var nameEQ = name + "=",
      ca = document.cookie.split(';'),
      c,
      i = ca.length;
  while (i--) {
    c = ca[i];
    while (c.charAt(0) === ' ') {
      c = c.substring(1,c.length);
    }
    if (c.indexOf(nameEQ) === 0) {
      return c.substring(nameEQ.length,c.length);
    }
  }
  return null;
}
//...
alert('"' + field + '" értéke "' + readCookie(field) + '"');
Azt nem mondom, hogy ez a legjobb cookie olvasó függvény, de a feladatnak eleget tesz. Van ennél sokkal teljesebb megoldás.
9

És ebben

vmarci21 · 2012. Szep. 22. (Szo), 12.07
És ebben a "name" szöveget átírjam a keresett cookie nevére? (vagy hogy adom meg azt, hogy melyik cookie-t keresem?)

Ez számomra még mindig érthetőbb (csak nem sikerül megoldanom, hogy mind a 3 cookie-t lekérje):

function get_cookie ( cookie_name )  
{  
  var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );  
  
  if ( results )  
    return ( unescape ( results[2] ) );  
  else  
    return null;  
}  
 
10

ez jó?

vmarci21 · 2012. Szep. 22. (Szo), 12.14
Azt hiszem ennek működnie kéne, de még mindig nem jó:


 function readCookie() {
var results = document.cookie.match ( '(^|;) ?' + memoria + '=([^;]*)(;|$)' );    
    
  if ( results )    
    return ( unescape ( results[2] ) );    
  else    
    return null;    
     
     var results2 = document.cookie.match ( '(^|;) ?' + hdd + '=([^;]*)(;|$)' );    
    
  if ( results2 )    
    return ( unescape ( results2[2] ) );    
  else    
    return null; 
     
     var results3 = document.cookie.match ( '(^|;) ?' + cpu + '=([^;]*)(;|$)' );    
    
  if ( results3 )    
    return ( unescape ( results3[2] ) );    
  else    
    return null; 
 }
 
11

változók

Poetro · 2012. Szep. 22. (Szo), 13.27
Tudod, mik azok a változók? Azt tudod, hogyan működnek a függvények? Tudod, mit jelentenek az argumentumok és a visszatérési érték?
12

nem

vmarci21 · 2012. Szep. 22. (Szo), 16.15
Nem, nem tudom. Minden javascript oktató könyv ezzel kezdi, de engem nem nagyon érdekel, hogy mit hogyan kéne hívni. A lényeg az hogy működjön a kód, nem pedig az elméleti hü***. (Megpróbáltam megtanulni, vagy 20-szor átolvastam a javascriptel való foglalkozásom kezdetén (kb. 2-3 hónapja) az 1. részt (világháló lehetőségei c. könyv, javascript bevezetés, ill. javascript 1.0), de sok minden nem maradt meg belőle. És érdekes módon így is tudtam írni egyszerű javascript progikat, de most falba ütköztem, ezért kérek most itt segítséget.
13

tehát bebizonyosodott, hogy a

szabo.b.gabor · 2012. Szep. 22. (Szo), 16.38
tehát bebizonyosodott, hogy a kis kialakított világod az elméletről, gyakorlatról, alázatról és arcról hibás..
14

Olyanok is a scriptjeid, mint

Emendre · 2012. Szep. 22. (Szo), 21.53
Olyanok is a scriptjeid, mint amennyit értesz hozzá...
15

Nem semmi csávó vagy!

Karvaly84 · 2012. Szep. 23. (V), 01.08
Nem semmi csávó vagy!
16

Miért bántjátok?

Pepita · 2012. Szep. 25. (K), 04.00
Nem értem miért kell szegényt bántani, így is elege lehet a világból...

Saját kútfőből (nem ám könyvből!) írt egy remek szkriptet, csak az a szemétláda ba..ik rendesen működni. Pedig jól csinálta. És senki sem segít. És erre fel még bántjátok is, hát - meg van a véleményem...
17

Alapok

Poetro · 2012. Szep. 25. (K), 06.52
Ha valaki a programozás alapjait nem érti, és nem is igazából akarja megérteni, azon szerinted hogyan lehet segíteni. Adtam neki kódot, ami rövid és egyszerűen olvasható. Ezt kellene megérteni, meg azt, hogy mik a paraméterek, argumentumok, függvények, változók. Ha ez megvan, akkor érteni fogja, miért nem megy a saját megoldása, és hogyan működik például az enyém. De ha egy könyv elején feladja akkor nincs meg benne az elhatározás (vagy rossz könyvet választott).
19

rájöttem

vmarci21 · 2012. Szep. 25. (K), 19.23
Asszem rájöttem mi a baj. A könyvben, amiből a javascriptet elkeztem tanulni, a html is benne van. Belenéztem, és azt nem mondanám hogy nem értem, mert tudom hogy (egy egyszerű példa) mi a table, de ha nem tudnám, semmit sem értenék belőle. Nem a kezdők számára van megfogalmazva, hanem azoknak akik már ismernek 5-6 programozást. Ezek után nem is csodálom, hogy nem érte a javascript 'elméletlt'. Tudnátok ajánlani valami könyvet/(inkább) weboldalt, amiben a javascript érthetően (magyarul) van meg? Előre is köszönöm.

(ui.: A kód amit legutoljára írtam nagyon rossz?
Ja és persze: Pepita köszi a biztatást/'védelmet'!
)
23

Ne köszönd...

Pepita · 2012. Szep. 26. (Sze), 03.21
Ne köszönd, mert Poetro és Karway (és valószínűleg te is) nem vették észre kommentemben az iróniát. Akár úgy is vehetnénk, hogy én szidtalak a legjobban, csak kellően becsomagoltam...
Valójában odatartottam eléd a tükröt - és ez sokszor nagyobbat üt, mint a szidás (feltéve, ha meg is látod benne magad).

Ajánlás:
Cikkajánló magyarul, ám itt HTML kezdő cikkek nem sokan vannak. DE.
Mindenképp legyél előbb vér profi HTML(4)-ben és CSS(2)-ben. A HTML5/CSS3 még várhat.
Tanulj meg különbséget tenni program- és leíró nyelvek között.
Csak ezután kezdj JS-el operálni, különben csak katyvasz lesz belőle. Miután az alapokat (JS) már elsajátítottad, máris kacsintgathatsz pl. a jQuery (vagy más rendszer) felé, megkönnyíti sok helyzetben a munkát.
És hidd el: az alapfogalmak rendkívül fontosak, meg is kell értsed ezeket, anélkül nem fog menni.
Szükséged lesz angoltudásra is, sok dolog nincs is magyarul.

Szerk: Programnyelvek portál Itt viszont nincs HTML/CSS, csak programnyelvek.
18

Ezért :D

Karvaly84 · 2012. Szep. 25. (K), 11.45
Kérdés:
Tudod, mik azok a változók? Azt tudod, hogyan működnek a függvények? Tudod, mit jelentenek az argumentumok és a visszatérési érték?

Válasz:
Nem, nem tudom. Minden javascript oktató könyv ezzel kezdi, de engem nem nagyon érdekel, hogy mit hogyan kéne hívni.

Ezen elborult az agyam :D
22

Őszinte

Pepita · 2012. Szep. 26. (Sze), 03.12
De őszinte volt... :)
6

A kódod alapján neked

kuka · 2012. Szep. 21. (P), 18.36
A kódod alapján neked alapvető gondjaid vannak programozás terén. Ahelyett, hogy a sütiket erőltetnéd előbb olvass utána a Függvény (programozás) mibenlétének. Komolyan. Amíg 3 azonos működésű függvénnyel állítasz ide addig mi úgyis hiába magyarázzuk a sütiket.
7

ezt tudtam

vmarci21 · 2012. Szep. 21. (P), 18.48
Azt tudom hogy javascriptből keveset tudok, de már olvasom a link, és a link alatti cikket. Viszont abban segíthetnétek, hogy ezt hogy lehet úgy megcsinálni, hogy ez ne csak 1, hanem 3 sütit is lekérjen...

function get_cookie ( cookie_name )
{
  var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );

  if ( results )
    return ( unescape ( results[2] ) );
  else
    return null;
}
20

Ezekkel a linkekkel nagyon

hunkris · 2012. Szep. 25. (K), 21.40
Ezekkel a linkekkel nagyon sokra mész.

Ajánlom figyelmedbe EZT az oldalt.

Fontos megjegyezni, hogy az ezredfordulókor készült, van ami már máshogy van, vagy nincs is. Ennek ellenére az alapokat nagyon jól megmutatja.

Egyébként kikérném a profik véleményét, nem kötelező az ifnél a kapcsos zárójel? Ha csak return van, elhagyható?
21

nem kötelező az ifnél a

Poetro · 2012. Szep. 26. (Sze), 00.06
nem kötelező az ifnél a kapcsos zárójel?

Nem kötelező, ahogy szinte semmi C szintaxist használó nyelv esetén sem az, ugyanakkor ajánlott.