17. september 2004 - 13:20Der er
27 kommentarer og 2 løsninger
Hvordan tjekker man om en værdi findes i et array
Hej, jeg har et js array som jeg vil redigere i. Jeg vil tjekke om en af "linierne" har værdien 44 og hvis den har, så skal den (linie) slettes. Eller sagt lidt mere rigtigt: den skal lave en string med alle de andre værdier og anbringe en * mellem hver!
1)Skriver man : arr = new array(); eller var arr = new array(); skal man skrive 'var' når det er et array jeg vil lave? Jeg putter indholdet ind med arr = oldstr.split();
2) Hvordan gør man dette: (skrevet det som jeg plejer i php:-) var str = 0; foreach (arr as key => value){ if (value!="44"){str = str + "*" + value} //kan man forøvrigt det?(+) jeg vil at den skal lave en linie med feks 1*12*21*22*10 }
Hvordan gør man dette: (skrevet det lidt som jeg plejer i php:-) var str = 0; foreach (arr as key => value){ if (value!="44"){str = str + "*" + value} //kan man forøvrigt bruge + her? jeg vil at str = feks '1*12*21*22*10' }
Hvordan gør man dette: (skrevet det lidt som jeg plejer i php:-) var str = "", sep = ""; for (i=0;i<arr.length();i++){ if (arr[]!="44")str = str + sep + value; }
det ligner noget jeg kan bruge :o) Jeg er igang med at sætte det sammen og så smider jeg det lige herind så du evt kan kigge på det for mig :o) Tusind tak!
jo det her du helt ret i. der er nogle gode ideer der! for jeg får jo en streng ind med feks 213*312*23*1243*1241*232*44 eller 554*5*44*586*55 eller 44*546*55*55*58
og så kunne man simpelthen bare fjerne alle '*44' og '44' og så er den pot ude! Det lyder meget simpelt!
Herunder er det jeg indtil videre er nået frem til: Det er til en function der gemmer de linie-numre som brugeren sætter flueben i. De bliver gemt i en cookie som en lang række adskilt af * Senere kan brugeren klikke på vis mine foretrukne!
Her er feks en af de checkboxe der sætter function'en i gang: <input name="44" type="checkbox" value="checked" onClick="SetFavoritWantsid('favorit_wantsids','44')">
Og her er javascript function'en: (som jo skal laves med replace istedet!) 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("*");
// Der tjekkes om checkboxen er checked (om value='checked') var status = document.form.wantsid.value; if(status=="checked"){ var NewCookie = OldCookie + sep + wantsid; WriteCookie(cookiename,NewCookie,expiration); alert('Føjet til dine foretrukne!'); }
if(status!="checked"){ // Denne wantsid skal fjernes fra cookien, hvis den er deri! if (OldCookie==""){ // Der er ingen cookie sat og der skal derfor bare sættes denne wantsid i en ny cookie WriteCookie(cookiename,wantsid,expiration); } else { // der er en gammel cookie med nogle wantsid i for (i=0;i<arr.length;i++){ // skriver kun de andre wantsid igen, ikke denne! if (arr[i] != wantsid){ NewCookie = NewCookie + sep + arr[i]; } }
if (NewCookie==""){ // der var kun denne wantsid tilbage i cookien og den skal derfor slettes helt. DelCookie(cookiename); } else { // Der er stadig nogle wantsid'er tilbage og de skal skrives i cookien! WriteCookie(cookiename,NewCookie,expiration); } } alert('Fjernet fra dine foretrukne!'); } }
Derudover er der selvfølgelig 3 andre function'er (DelCookie,WriteCookie og GetCookie)
Er du sød at fortælle mig om det er helt ved siden af? og om der er nogle fejl deri!
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("*");
// Der tjekkes om checkboxen er checked (om value='checked') var status = document.form.wantsid.value; if(status=="checked"){ if (OldCookie==""){ var NewCookie = wantsid; } else { var NewCookie = OldCookie + sep + wantsid; } WriteCookie(cookiename,NewCookie,expiration); alert('Føjet til dine foretrukne!'); }
if(status!="checked"){ // Denne wantsid skal fjernes fra cookien, hvis den er deri! if (OldCookie==""){ // Der er ingen cookie sat og der skal derfor bare sættes denne wantsid i en ny cookie WriteCookie(cookiename,wantsid,expiration); } else { // der er en gammel cookie med nogle wantsid i
for (i=0;i<arr.length;i++){ // skriver kun de andre wantsid igen, ikke denne! if (arr[i] == wantsid){ if (NewCookie==""){ NewCookie = arr[i]; } else { NewCookie = NewCookie + sep + arr[i]; } } }
if (NewCookie==""){ // der var kun denne wantsid tilbage i cookien og den skal derfor slettes helt. DelCookie(cookiename); } else { // Der er stadig nogle wantsid'er tilbage og de skal skrives i cookien! WriteCookie(cookiename,NewCookie,expiration); } } alert('Fjernet fra dine foretrukne!'); } }
Du benytter functionerne WriteCookie, GetCookie og DelCookie. Dem kan jeg ikke se, er det nogle du har skrevet/fundet? De et nemlig ikke standard js funktioner.
Og:
// Der tjekkes om checkboxen er checked (om value='checked') var status = document.form.wantsid.value; if(status=="checked"){ ...
Du har en checkboxen der hedder 'wantsid', ok? og du skal vide om den er checked!
først skal du adressere feltet, og det gør du bedst sådan: document.FormNavn.FeltNavn
så du skal give din form et name: <form name="myForm" ....>
og så vil feltet kunne adresseres sådan: document.myForm.wantsid
Når du skal vide om den er checked bruger du checked-property'en, så din kode skulle være:
// Der tjekkes om checkboxen er checked (om value='checked') var status = document.myForm.wantsid.checked; if(status == true){ ...
eller blot if(status){ ...
og: WriteCookie(cookiename,wantsid,expiration);
du sender wantsid med funktionen, jeg går udfra at det er et tal, og at det er den wantsid der sendes med som et argument til funktionen? man det er lidt forvirrende at den hedder det samme som din checkbox.
Har ellers 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 checkboxene ud! her er koden: <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: <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!'); } }
function FocusSearchField() { if (document.form.searchword.value == 'søgeord') { document.form.searchword.value = ''; } } //--> </script>
Jeg fik heldigvis hjælp med det :-) og nu kører det bare :-) Det var roenving der knækkede nødden!
I øvrigt os tak for dine indslag! :o)
Synes godt om
Ny brugerNybegynder
Din løsning...
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.