Avatar billede pissed_squirrel Nybegynder
27. august 2009 - 20:40 Der er 10 kommentarer og
1 løsning

in array funktion

Hej Eksperter

Jeg har brug for at tjekke om en given værdi er at finde i et array og bruger derfor denne funktion

function in_array( what, where ){
    for(var i=0;i<where.length;i++){
        if(what == where[i]){
            return true;
          }
    }
    return false;
}

Så langt så godt


Så har jeg denne funktion:

function checkBestyrelse()
{
    var emails = document.dataForm.modtager;

    var users = new Array();

    users[0] = "Christoffer Guldager <christoffer@trollesminde.dk>";
    users[1] = "Ingelise Guldager <ig@trollesminde.dk>";
       
    for (i = 0; i < emails.length; i++)
    {
        if (in_array(emails[i].value, users))
        {
            emails[i].checked = true;
        }else{
            emails[i].checked = false;
        }
    }
}
</script>


Jeg har så en checkbox som ser således ud:

<input name="modtager" type="checkbox" value="Test <test@test.dk>" checked />

Jeg har flere af disse dog med forskellig value

Når jeg så trykker på en knap som kalder checkBestyrelse så skulle den tjekke om de findes i array og hvis de gør skulle den sætte dem til checked. Det gør den ikke, den fjerner check, hvilket siger mig at den ikke kan finde ud af at sammenligne, har jeg ret og hvad kan jeg gøre for at det virker?

Er ved at få grå hår af dette :(

På forhånd tak
Avatar billede erikjacobsen Ekspert
27. august 2009 - 21:11 #1
Har du et kørende eksempel vi kan se?

Og hvor kommer emails-arrayet fra?
Avatar billede olebole Juniormester
27. august 2009 - 21:13 #2
<ole>

Jeg forstår ikke, hvad det er, du ønsker at lave. Det virker som en meget sær måde at bruge en checkbox på - og det er sjældent hensigtsmæssigt at bruge elementer med en velkendt virkemåde til noget helt uventet. Prøv at lægge et link til siden  =)

/mvh
</bole>
Avatar billede erikjacobsen Ekspert
27. august 2009 - 21:19 #3
Sådan her det skal virke?  http://n0p.com/884873.html
(kun en skitse)

Jeg ville godt nok aldrig lægge emailadresser ud i klar tekst på en webside.
Avatar billede olebole Juniormester
27. august 2009 - 21:48 #4
Så ville jeg nok bruge en hash tabel:

var oUsers = {
    "Chris <chris@ingen.ingen>": 1,
    "Ingen <ingen@ingen.ingen>": 1
};
function checkBestyrelse()
{
    var emails = document.dataForm.modtager;
     
    for (i = 0; i < emails.length; i++)
    {
        if (oUsers[emails[i].value])
        {
            emails[i].checked = true;
        }else{
            emails[i].checked = false;
        }
    }
}

- og måske med en lidt mere sexy løkke:

function checkBestyrelse()
{
    var emails = document.dataForm.modtager;
     
    for (i = 0; i < emails.length; i++)
    {
        emails[i].checked = oUsers[emails[i].value] ? true : false;
    }
}
Avatar billede olebole Juniormester
27. august 2009 - 21:48 #5
- selvom det føles ret uvandt at bruge ord som sexy og Løkke i én og samme sætning  ;D
Avatar billede olebole Juniormester
27. august 2009 - 21:50 #6
- eller bare:

function checkBestyrelse()
{
    var emails = document.dataForm.modtager;
     
    for (i = 0; i < emails.length; i++)
    {
        emails[i].checked = oUsers[emails[i].value]==1;
    }
}
Avatar billede pissed_squirrel Nybegynder
27. august 2009 - 21:52 #7
erikjacobsen: Ja det er sådan det skal virke, men det lader til at det er &lt; og &gt; som gør at den ikke kan sammenligne ordenligt selv om det er skrevet sådan begge steder

Bare rolig mht. emailadresserne, det er ikke muligt at tilgå siden for personer som ikke skal have mulighed for at det.

I kan tilgå et eksempel her, som ikke virker:
http://www.sewers.dk/javascript.html

Når man trykker på knappen Bestyrelse skulle den vælge de 2 første, men det gør den ikke
Avatar billede erikjacobsen Ekspert
27. august 2009 - 21:55 #8
Det er jo så heller ikke det du viser os i spørgsmålet.

En &lt; i en streng bliver kun til < i HTML, ikke i javascript.

Så du kan sikkert bare ændre

users[0] = "Test &lt;test@test.dk&gt;";

til

users[0] = "Test <test@test.dk>";

(og også for den næste)
Avatar billede pissed_squirrel Nybegynder
27. august 2009 - 22:11 #9
Du har ret erik, og et er gjort nu, kunne bare ikke forstå hvorfor Javascript ikke kan se at &gt; er det samme som &gt;

Hvis nogen ønsker point så smid et svar, for ellers lukker jeg
Avatar billede erikjacobsen Ekspert
27. august 2009 - 22:24 #10
En tekst i HTML skal (kan) have HTML-entities for særlige tegn. Det har ikke noget med tekst i Javascript at gøre. En streng i Javascript skal Javascript-encodes.

Luk du bare ;)
Avatar billede pissed_squirrel Nybegynder
28. august 2009 - 11:04 #11
Lukker
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester