18. september 2004 - 00:14Der er
26 kommentarer og 1 løsning
Jeg får fejl og cookie bliver ikke sat som den skal!
Jeg får fejl og cookie'en bliver ikke sat!!
Der er tale om et script som bruges til at huske foretrukne annoncer/linier etc udfra liniens/annoncens id
Har forsøgt... Men jeg tror en af fejlene er her: var status = document.form.wantsid.checked;
Hvordan skal jeg få den til at opfatte 'værdien af wantsid' i stedet for 'wantsid'?
Men jeg tror os der er en eller flere fejl! :-(
Gider du ta en hurtig kigger på det :o) :o) :o)
det er en foreach der spytter checkboxe ud og wantsid er altid et nummer > 0 ! her er checkboxene der bliver skrevet ud af php: <input name="<?php echo $wantsid; ?>" type="checkbox" value="checked" onClick="SetFavoritWantsid('favorit_wantsids','<?php echo $wantsid; ?>')" <?php if ($favorit_wantsid_list[$wantsid]=="ja"){echo "checked";} ?>>
her er ALT JS der laver cookie'en og redigerer i cookie'en: <script language="JavaScript" type="text/JavaScript"> <!-- function DelCookie (name,path,domain){ if (getCookie(name)){ document.cookie = name + "=" + ((path == null) ? "" : "; path=" + path) + ((domain == null) ? "" : "; domain=" + domain) + "; expires=Thu, 01-Jan-70 00:00:01 GMT"; } }
function GetCookie(name){ var cname = name + "="; var dc = document.cookie; if (dc.length > 0){ begin = dc.indexOf(cname); if (begin != -1){ begin += cname.length; end = dc.indexOf(";", begin); if (end == -1) end = dc.length; return unescape(dc.substring(begin, end)); } } return null; }
function SetFavoritWantsid(cookiename,wantsid){ var expiration = new Date(); expiration.setTime(expiration.getTime() + 60000*24*21); // 21 dage var OldCookie = GetCookie(cookiename); var NewCookie = ""; var sep = "*"; var arr = OldCookie.split("*");
var status = document.form.wantsid.checked; if(status){ if ((OldCookie=="")||(!OldCookie)){ NewCookie = wantsid; } else { NewCookie = OldCookie + sep + wantsid; } WriteCookie(cookiename,NewCookie,expiration); alert('Føjet til dine foretrukne!'); }
if(!status){ // Denne wantsid skal fjernes fra cookien, hvis den er deri! if (OldCookie==wantsid){ // der var kun denne wantsid tilbage i cookien og den skal derfor slettes helt. DelCookie(cookiename); } else{ // der er en gammel cookie med nogle wantsid i for(i in arr)if(arr[i]==wantsid)arr.splice(i,1); NewCookie=arr.join("*"); WriteCookie(cookiename,NewCookie,expiration); } alert('Fjernet fra dine foretrukne!'); } } //--> </script>
JA, jeg har flere checkboxe, men de hedder ikke wantsid! de hedder feks 44 65 osv. for $wantsid er altid et nummer og jeg gør jo sådan her name="<?php echo $wantsid; ?>"
function SetFavoritWantsid(cookiename,wantsid){ var expiration = new Date(); expiration.setTime(expiration.getTime() + 1000*60*60*24*21); // 21 dage var OldCookie = GetCookie(cookiename); var NewCookie = ""; var sep = "*"; var arr = OldCookie.split("*");
var status = wantsid.checked; if(status){ if ((OldCookie=="")||(!OldCookie)){ NewCookie = wantsid.name; } else { NewCookie = OldCookie + sep + wantsid.name; } WriteCookie(cookiename,NewCookie,expiration); alert('Føjet til dine foretrukne!'); }
if(!status){ // Denne wantsid skal fjernes fra cookien, hvis den er deri! if (OldCookie==wantsid.name){ // der var kun denne wantsid tilbage i cookien og den skal derfor slettes helt. DelCookie(cookiename); } else{ // der er en gammel cookie med nogle wantsid i for(i in arr)if(arr[i]==wantsid.name)arr.splice(i,1); NewCookie=arr.join("*"); WriteCookie(cookiename,NewCookie,expiration); } alert('Fjernet fra dine foretrukne!'); } }
-- for når vi nu alligevel kalder fra checkboksen, kan vi ligesågodt sende boksen med !-)
-- og så vil jeg da lige gøre opmærksom på, at det er en dårlig idé at have navne, som starter eller kun består af tal, da det i en masse sammenhænge kan give problemer, i nogle sammenhænge er det endda forbudt, så udform dem altid med mindst et bogstav i starten !o]
Vedr navnet skal være med bogstav i starten, det vidste jeg ikke! Men jeg kan sagtens forestille mig at der kan opstå forvirring! Det vil jeg huske fremover!
Jeg gør bare sådan her og så er det ik kun et tal: <input name="number<?php echo $wantsid; ?>" type="checkbox" value="checked" onClick="SetFavoritWantsid('favorit_wantsids',this)" <?php if ($favorit_wantsid_list[$wantsid]=="ja"){echo "checked";} ?>>
Jeg tester det lige :o) Og skriver igen.
I mellemtiden kan du jo smide et svar, for jeg tror det virker nu! :o)
-- en identifier, som starter med et tal, er ulovlig i hvert fald, hvis den skal bruges som javascript identifier (f.eks. document.formIdentifier.feltIndentifier eller variabelIdentifier) eller hvis den bruges som et id på et html-element, så det er bare en god vane altid at starte med et bogstav (eller underscore _ i en javascript-ting !-)
Først checkboxen, som jeg har ændret lidt i onclick og i value og i name:
<input type="checkbox" name="number<?php echo $wantsid; ?>" value="<?php echo $wantsid; ?>" onClick="SetFavorit('favorit_wantsids',this)" <?php if ($favorit_wantsid_list[$wantsid]=="ja"){echo "checked";} ?> title="Gem denne efterlysning i dine foretrukne!">
Og her scriptet, som jeg har ændret lidt. Jeg har sat elm.value istedet for elm.name mest fordi name nu er blevet ændret til numberxxx og jeg har ændret wantsid til ThisBox for ordens skyld!
function SetFavorit(cookiename,ThisBox){ var expiration = new Date(); expiration.setTime(expiration.getTime() + 1000*60*60*24*21); // 21 dage var OldCookie = GetCookie(cookiename); var NewCookie = ""; var sep = "*"; var arr = OldCookie.split("*");
var status = ThisBox.checked; if(status){ if ((OldCookie=="")||(!OldCookie)){ NewCookie = ThisBox.value; } else { NewCookie = OldCookie + sep + ThisBox.value; } WriteCookie(cookiename,NewCookie,expiration); alert('Føjet til dine foretrukne!'); }
if(!status){ // Denne wantsid skal fjernes fra cookien, hvis den er deri! if (OldCookie==ThisBox.value){ // der var kun denne wantsid tilbage i cookien og den skal derfor slettes helt. DelCookie(cookiename); } else{ // der er en gammel cookie med nogle wantsid i for(i in arr)if(arr[i]==ThisBox.value)arr.splice(i,1); NewCookie=arr.join("*"); WriteCookie(cookiename,NewCookie,expiration); } alert('Fjernet fra dine foretrukne!'); } }
Er der noget galt??? eller kan det være i de andre function's(Getcookie osv.) fejlen ligger?
function GetCookie(name){ var cname = name + "="; var dc = document.cookie; if (dc.length > 0){ begin = dc.indexOf(cname); if (begin != -1){ begin += cname.length; end = dc.indexOf(";", begin); if (end == -1) end = dc.length; return unescape(dc.substring(begin, end)); } } return null; }
function SetFavorit(cookiename,ThisBox){ var expiration = new Date(); expiration.setTime(expiration.getTime() + 1000*60*60*24*21); // 21 dage var OldCookie = GetCookie(cookiename); var NewCookie = ""; var sep = "*"; var arr = OldCookie.split("*");
var status = ThisBox.checked; if(status){ if ((OldCookie=="")||(!OldCookie)){ NewCookie = ThisBox.value; } else { NewCookie = OldCookie + sep + ThisBox.value; } WriteCookie(cookiename,NewCookie,expiration); alert('Føjet til dine foretrukne!'); }
if(!status){ // Denne wantsid skal fjernes fra cookien, hvis den er deri! if (OldCookie==ThisBox.value){ // der var kun denne wantsid tilbage i cookien og den skal derfor slettes helt. DelCookie(cookiename); } else{ // der er en gammel cookie med nogle wantsid i for(i in arr)if(arr[i]==ThisBox.value)arr.splice(i,1); NewCookie=arr.join("*"); WriteCookie(cookiename,NewCookie,expiration); } alert('Fjernet fra dine foretrukne!'); } }
function FocusSearchField() { if (document.form.searchword.value == 'Søg i tekst') { document.form.searchword.value = ''; } } //--> </script>
Det siger den ikke, jeg kan ikke nå at læse den, den er hurtigt væk igen. blinker bare! Men måske er fejlen et helt andet sted :-)
Jeg kommer i tanke om at jeg har nogle andre steder på siden fejlen kan opstå. Jeg skal lige over til svigerfamilien og spise. Kigger på det i morgen tidlig med friske øjne og skriver herinde igen.
Nej, desværre ikke! Ikke i min browser! Og hvis jeg dobbeltklikker på den gule trekant, så blinker meddelelsen blot fre i et halvt sekundt. Men jeg har klikket og klikket og jeg kan se at det bare er en standartbesked. Ikke nogen specifik fejlmeddelelse. Æv
Men scriptfejlen opstår kun når jeg trykker på checkboxen.
Jeg har os prøvet at kigge i mozilla, men den melder slet ingen fejl overhovedet.
Jeg får stadig ikke den alert()
Jeg har testet det ud og i øvrigt fundet ud af at cookien heller ikke bliver sat!
Så noget må der være galt!. Og jeg kan ik se det! ingen idé!
function GetCookie(name){ var cname = name + "="; var dc = document.cookie; if (dc.length > 0){ begin = dc.indexOf(cname); if (begin != -1){ begin += cname.length; end = dc.indexOf(";", begin); if (end == -1) end = dc.length; return unescape(dc.substring(begin, end)); } } return null; }
Her er mit kode! Det er lidt ændret, for jeg har prøvet at fjerne fejlen på forskellig vis! Jeg får stadig Javascript-fejl og kan ikke finde ud af hvad jeg gør forkert! PLEEEEEAAAASE Hjælp mig!
først checkboxen og derefter javascriptet:
<input type="checkbox" name="number<?php echo $wantsid; ?>" value="<?php echo $wantsid; ?>" onClick="SetFavorit('favorit_wantsids',this,'<?php echo $wantsid; ?>')" <?php if ($favorit_wantsid_list[$wantsid]=="ja"){echo "checked";} ?> title="Gem denne efterlysning i dine foretrukne!">
function GetCookie(name){ var cname = name + "="; var dc = document.cookie; if (dc.length > 0){ begin = dc.indexOf(cname); if (begin != -1){ begin += cname.length; end = dc.indexOf(";", begin); if (end == -1) end = dc.length; return unescape(dc.substring(begin, end)); } } return null; }
function SetFavorit(cookiename,ThisBox,wantsid){ var expiration = new Date(); expiration.setTime(expiration.getTime() + 1000*60*60*24*21); // 21 dage var OldCookie = GetCookie(cookiename); var NewCookie = ""; var sep = "*"; var arr = OldCookie.split("*");
var status = ThisBox.checked; if(status){ if (!OldCookie){ NewCookie = wantsid; } else { NewCookie = OldCookie + sep + wantsid; } WriteCookie(cookiename,NewCookie,expiration); alert('Føjet til dine foretrukne!'); }
if(!status){ // Denne wantsid skal fjernes fra cookien, hvis den er deri! if (OldCookie==wantsid){ // der var kun denne wantsid tilbage i cookien og den skal derfor slettes helt. DelCookie(cookiename); } else{ // der er en gammel cookie med nogle wantsid i for(i in arr)if(arr[i]==wantsid)arr.splice(i,1); NewCookie=arr.join("*"); WriteCookie(cookiename,NewCookie,expiration); } alert('Fjernet fra dine foretrukne!'); } }
Tjah en af den slags tavetosser, som er svære at finde, samt en grundlæggende brøler, som jeg havde glemt fra jeg første gang kiggede mistænksomt på den ...
<input type="checkbox" name="number44" value="44" onClick="SetFavorit('favorit_wantsids',this)" title="Gem denne efterlysning i dine foretrukne!"> <input type="checkbox" name="number45" value="45" onClick="SetFavorit('favorit_wantsids',this)" title="Gem denne efterlysning i dine foretrukne!">
function GetCookie(name){ var cname = name + "="; var dc = document.cookie; if (dc.length > 0){ begin = dc.indexOf(cname); if (begin != -1){ begin += cname.length; end = dc.indexOf(";", begin); if (end == -1) end = dc.length; return unescape(dc.substring(begin, end)); } } return null; }
function SetFavorit(cookiename,ThisBox){ var expiration = new Date(); expiration.setTime(expiration.getTime() + 1000*60*60*24*21); // 21 dage var OldCookie = GetCookie(cookiename); var NewCookie = ""; var sep = "*"; var arr = (OldCookie)?OldCookie.split("*"):"";
if(ThisBox.checked){ if (!OldCookie){ NewCookie = ThisBox.value; } else { NewCookie = OldCookie + sep + ThisBox.value; } WriteCookie(cookiename,NewCookie,expiration); alert('Føjet til dine foretrukne!'); }else{ // Denne wantsid skal fjernes fra cookien, hvis den er deri! if (OldCookie==ThisBox.value){ // der var kun denne wantsid tilbage i cookien og den skal derfor slettes helt. DelCookie(cookiename); } else{ // der er en gammel cookie med nogle wantsid i for(i in arr)if(arr[i]==ThisBox.value)arr.splice(i,1); NewCookie=arr.join("*"); WriteCookie(cookiename,NewCookie,expiration); } alert('Fjernet fra dine foretrukne!'); } } </script>
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.