Avatar billede testwatest Nybegynder
19. februar 2007 - 11:04 Der er 7 kommentarer

Indsætte array i funktion og løb det igennem

Hvordan kan jeg lave en funktion med en variable, og så angive den som et array hvorefter jeg løber dette igennem?

Ved ikke om det er noget alá nedenstående. Det er i hvert fald cirka sådan i PHP :)

function test( variable )
{
    foreach( variable as var )
    {
        document.getElementById( "var" ).innerHTML = "test";
    }
}

<a href="#" onclick="test( array( 'box1', 'box2', 'box3' ) );">..</a>
Avatar billede testwatest Nybegynder
19. februar 2007 - 11:04 #1
*    document.getElementById( var ).innerHTML = "test";
Avatar billede jensgram Nybegynder
19. februar 2007 - 11:33 #2
Det vil blive noget lign.

for (var i = 0; i < variable.length; i++) {
    document.getElementById(variable[i])...
}

Men innerHTML er vist ikke vejen frem :)
Avatar billede barklund Nybegynder
19. februar 2007 - 11:55 #3
"var" er et reserveret ord og desuden hedder det "for each (element in array)" og ikke som i PHP "foreach (array as element)" - ellers er det samme ide:

for each (var my_variable in my_array) {
  document.getElementById(my_variable).innerHTML = "test";
}

Foreach blev tilføjet i JS1.4 tror jeg det var, så det har de fleste nyere browsere - ellers kan du bruge for..in der gennemløber keys frem var values:

for (var my_variable in my_array) {
  document.getElementById(my_array[my_variable]).innerHTML = "test";
}

Og hvis du endeligt skal løbe array'et igennem i række følge, så kan du gå helt ned til den simple løkke med et tal du inkrementerer - det er dog ikke nødvendigt, da ovenstående virker lige så fint.

:)

--
Morten Barklund
Avatar billede testwatest Nybegynder
19. februar 2007 - 12:33 #4
Burde det her så ikke virke:

<script type="text/javascript">
function minTest( my_array )
{
    for each( var my_variable in my_array )
    {
        document.getElementById( my_variable ).innerHTML = "test";
    }
}
</script>
<a onclick="minTest( array( 'tags1', 'test2', 'test3' ) );" href="#">test2</a>
<span id="test1"></span><span id="test2"></span><span id="test3"></span>
Avatar billede crazysnap Seniormester
20. februar 2007 - 14:28 #5
Hej testwatest,

Nej det burde stadig ikke helt virke, der er et par små-fejl i din kode, prøv at sammenligne med den jeg skriver nedenfor og se forskellene :).


function minTest( my_array )
{
    for( var my_variable in my_array )
    {
        document.getElementById( my_array[my_variable] ).innerHTML = "test";
    }
}

<a onclick="minTest( ['test1', 'test2', 'test3'] );" href="#">test2</a>
<span id="test1"></span><span id="test2"></span><span id="test3"></span>


Håber det hjalp! :)

Mvh.

- Snap
Avatar billede olebole Juniormester
20. februar 2007 - 15:41 #6
<ole>

Brug ikke en for/in-løkke, når du kan bruge en alm. for-løkke. Den sidste er betydeligt simplere og derfor hurtigere (mindre CPU/RAM krævende):

function minTest( my_array ) {
    for (var i=0,j=my_array.length; i<j; i++) {
        document.getElementById( my_array[i] ).innerHTML = "test " + i;
    }
}

<a onclick="minTest( ['test1', 'test2', 'test3'] );" href="#">test2</a>
<span id="test1"></span><span id="test2"></span><span id="test3"></span>

/mvh
</bole>
Avatar billede olebole Juniormester
20. februar 2007 - 15:43 #7
- og husk i øvrigt at returnere false i event-handler'en:
    <a onclick="minTest( ['test1', 'test2', 'test3'] );return false" href="#">test2</a>
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