lexas
Mitglied
Registriert: 10.11.2009
Beiträge: 5
|
|
Ich habe das problem das ich 2 cookies habe und nicht weiss wie ich direckt den einen ansprechen kann sie sollen einzeln hoch zählen. Ich habe ein Holz und ein Zaehler.
Code:
<script type="text/javascript">
function WertHolen () {
var Wert = "";
if (document.cookie) {
var Wertstart = document.cookie.indexOf("=") + 1;
var Wertende = document.cookie.indexOf(";");
if (Wertende == -1)
Wertende = document.cookie.length;
Wert = document.cookie.substring(Wertstart, Wertende);
}
return Wert;
}
function WertSetzen (Bezeichner, Wert, Verfall) {
var jetzt = new Date();
var Auszeit = new Date(jetzt.getTime() + Verfall);
document.cookie = Bezeichner + "=" + Wert + "; expires=" + Auszeit.toGMTString() + ";";
}
function Zaehlerstand () {
var Verfallszeit = 1000 * 60 * 60 * 24 * 365;
var Anzahl = WertHolen();
var Zaehler = 0;
if (Anzahl != "")
Zaehler = parseInt(Anzahl);
Zaehler = 0;
WertSetzen("Zaehler", Zaehler, Verfallszeit);
;
}
</script> |
|
|
| 12.11.2009 10:51:02 |
|
Tidynator
Der
Registriert: 18.05.2007
Beiträge: 43
|
|
Schau mal, ob dir dieser Link Inspiration gibt. http://de.selfhtml.org/javascript/objekte/string.htm#split
Mir falllen bei "2 Cookies" immer Array und Index ein. Sag' bescheid, wenn dir das nichts nützt.
(Wäre froh, ich hätte grad' zwei Cookies; -habe nur Möhren und Apfelscheiben).
_______________________________________ Did you know you can't steer a boat that isn't moving? Just like a life (Paul Lutus, www.arachnoid.com)
|
|
| 13.11.2009 09:29:28 |
|
lexas
Mitglied
Registriert: 10.11.2009
Beiträge: 5
|
|
Danke für die antwort entweder habe ich es nicht richtig gelesen aber der befehl split sucht in einer Variablen nach einen Wort,
Also mit split geht’s nicht, ich weiss nicht wie ich ihn sage das er nicht den ersten gespeicherten nehmen soll sondern zb. holz
über
Code:
function WertHolen () {
var Wert = "";
if (document.cookie) {
var Wertstart = document.cookie.indexOf("=") + 1;
var Wertende = document.cookie.indexOf(";");
if (Wertende == -1)
Wertende = document.cookie.length;
Wert = document.cookie.substring(Wertstart, Wertende);
}
return Wert;
} |
sucht er nach einen cookie mit dieser Zeile
Code:
if (document.cookie) |
wie sage ich ihn jetzt das er nicht nach dem ersten sondern nach dem Cookie namens holz suchen soll.
|
|
| 13.11.2009 11:46:59 |
|
Tidynator
Der
Registriert: 18.05.2007
Beiträge: 43
|
|
String.split()
"Zerlegt Zeichenketten in mehrere Teilzeichenketten. Die erzeugten Teilzeichenketten werden in einem Array gespeichert. Erwartet als Parameter ein Begrenzerzeichen oder eine Begrenzerzeichenfolge, die als Trennmerkmal für die Teilzeichenketten verwendet werden soll. Optional kann als zweiter Parameter noch übergeben werden, wie viele Split-Vorgänge maximal erzeugt werden sollen."
Wenn du einen String hast (nenn ihn Paul, Krpflnggg2ee oder auch 'Cookie') und der String schaut so aus: "myValue:17; herValues:60,110,110"
Dann erhältst du mit nArray = Paul.split(';') ein Array wie dieses:
{[myValue:17], [herValues:60,110,110] }
Das sind 2 Array-Elemente. Das erste: myValue:17. Das kann man wieder splitten:
nochNArray = nArray[0].split(':');
Damit bekommst du wieder ein Array: {[myValue], [17]}. var key = nochNArray[0]; // myValue var value = nochNArray[1]; // 17
Alles aus dem Kopf. Ich glaube aber, so geht das.
Wenn du 'Namen' suchen möchtest, brauchst du freilich eine Schleife. Da bietet sich bei Arrays die for-Schleife an.
Beitrag geändert von Tidynator (13.11.2009 12:25:35)
_______________________________________ Did you know you can't steer a boat that isn't moving? Just like a life (Paul Lutus, www.arachnoid.com)
|
|
| 13.11.2009 12:12:04 |
|
lexas
Mitglied
Registriert: 10.11.2009
Beiträge: 5
|
|
So habe ich das jetzt ab geändert aber leider auch ohne erfolg. da er immer nur die null wieder gibt.
Code:
<script type="text/javascript">
function WertHolen (holz) {
var keks = document.cookie;
var posholz =keks.indexOf(";" + holz + "=");
if (posholz == -1) {
if (keks.indexOf (holz + "=") == 0) posholz = 0;
else return 0;
}
var Wert = "";
var wertAnfang = keks.indexOf("=", posholz)+1;
var wertEnde = keks.indexOf(";", posholz);
if (werEnde == -1) wertEnde = keks.length;
Wert = keks.substring(wertAnfang, wertEnde);
return Wert;
}
function WertSetzen (Bezeichner, Wert, Verfall) {
var jetzt = new Date();
var Auszeit = new Date(jetzt.getTime() + Verfall);
document.cookie = Bezeichner + "=" + Wert + "; expires=" + Auszeit.toGMTString() + ";";
}
function Zaehlerstand2 () {
var Verfallszeit = 1000 * 60 * 60 * 24 * 365;
var Anzahl = WertHolen();
var holz = 0;
if (Anzahl != "")
holz = parseInt(Anzahl);
holz = holz + 1;
WertSetzen("holz", holz, Verfallszeit);
return (holz);
}
</script> |
Beitrag geändert von lexas (16.11.2009 08:58:14)
|
|
| 16.11.2009 08:56:22 |
|
Tidynator
Der
Registriert: 18.05.2007
Beiträge: 43
|
|
Ich möchte nicht alle Details aus deinem Beispiel reproduzieren. Dabei mache ich immer Fehler. Darum habe ich das Folgende mal übungsweise für mich selbst geschrieben. Frag nach, wenn etwas noch nicht klar ist.
Schwierigkeiten, auf die ich selbst nach und nach gestoßen bin, abzüglich derer, die noch lauern, ohne, dass ich sie im Code schon behandele:
1.) White-space wird irgendwo wilkürlich eingefügt. Es interessiert mich nicht, wodurch oder von wem. Ich "trimme" das einfach weg.
2.) Zu wenig Prüfungen. Wie sich gezeigt hat, war navigator.cookieEnabled notwendig. :o)
3.) Zu viel Code für so bissi Resultat. Wollte aber nicht ausgerechnet hier, nachdem ich oben so klug daher geschrieben habe, Flüchtigkeitsfehler produzieren.
Schau mal, ob dich das weiter bringt.
Code:
<html>
<head>
<script type="text/javascript">
/* Begrenzer */
var FDELIM = '=';
var CDELIM = ';';
function wertSetzen( feld, wert) {
var newCookie = "";
wert = (wert ? String(wert) : '');
if(feld != null && navigator.cookieEnabled) {
var ck = document.cookie
if(ck) {
var warray = ck.split(CDELIM)
var pair = null;
var kvArray = null;
while(warray.length > 0) {
pair = warray.pop();
fwArray = pair.split(FDELIM);
if(fwArray && fwArray.length == 2 ) {
if(feld != fwArray[0] ) {
newCookie += fwArray.join(FDELIM);
if(warray.length > 0) {
newCookie += CDELIM;
}
}
}
}
}
}
else {
/* Cookies deaktiviert */
alert('... erm.');
}
/* neues oder geändertes Feld anhängen */
newCookie += (newCookie.length > 0 ? CDELIM : '') + feld + FDELIM + wert ;
document.cookie = newCookie;
alert(document.cookie);
}
function wertHolen(feld) {
var result = null;
if(feld != null && navigator.cookieEnabled) {
var ck = document.cookie;
if(ck) {
var warray = ck.split(CDELIM);
var pair = null;
var kvArray = null;
while(warray.length > 0) {
pair = warray.pop();
kvArray = pair.split(FDELIM);
if(feld.trim() == kvArray[0].trim() ) {
result = kvArray[1] ;
}
}
}
}
else {
alert('... erm');
}
alert(feld + ' = ' + result);
return result;
}
function trim( str) {
return str.replace(/\s+/g,'');
}
</script>
<title>test</title>
</head>
<body onload="javascript:wertSetzen('Temperatur', 12);">
<p onclick="javascript:wertHolen('Temperatur');" >TEST: Temperatur</p>
<p onclick="javascript:wertSetzen('Gestern', 'Sonntag');" >Setzen: Gestern = Sonntag</p>
<p onclick="javascript:wertHolen('Gestern');" >Holen: Gestern</p>
</body>
</html> |
[nachträgliche Edits: u.a. einen Delimiter entfernt, Gestotter im Kommentar entfernt, </html> eingefügt, etc. etc...]
Beitrag geändert von Tidynator (16.11.2009 14:18:25)
_______________________________________ Did you know you can't steer a boat that isn't moving? Just like a life (Paul Lutus, www.arachnoid.com)
|
|
| 16.11.2009 10:43:51 |
|
lexas
Mitglied
Registriert: 10.11.2009
Beiträge: 5
|
|
danke für die schnelle antwort dein wertholen geht auch nicht der rest ist super eine dirckte zuweisung ist was ich nicht machen wollte weil das zu lang ist und ich 100% felhlermachen würde.
Beitrag geändert von lexas (16.11.2009 11:33:24)
|
|
| 16.11.2009 11:32:44 |
|
Tidynator
Der
Registriert: 18.05.2007
Beiträge: 43
|
|
Bei mir geht's. Sogar, obwohl oben noch ein Fehlerchen drin war, der sich aber erst beim dritten Wert ausgewirkt hätte... 8-/
Habe es inzwischen korrigiert. Hier mal ein Screenshot (vor der Korrektur!): http://img5.imagebanana.com/view/i4oojqb5/sc.png
Beitrag geändert von Tidynator (16.11.2009 12:17:14)
_______________________________________ Did you know you can't steer a boat that isn't moving? Just like a life (Paul Lutus, www.arachnoid.com)
|
|
| 16.11.2009 12:10:33 |
|