04. juni 2002 - 18:22Der er
9 kommentarer og 2 løsninger
nulstille værdi efter funktion
Jeg har en række ID'er som skal samles til en række af komma-adskilte argumenter samtidig med at de parres med argumentet 'no' og endelig sendes videre til en funktion.
Altså: ID00 ID01 ID02 ID03 - skal ende som:
'ID00','no','ID01','no','ID02','no','ID02','no'
Jeg har forsøgt med dette:
<script type="text/javascript"> argStrings = new Array('ID00','ID01','ID02','ID03'); function skrivArgumentStreng() { for (i=0; i<argStrings.length; i++) { argStrings[i] = '\''+argStrings[i]+'\''; // Alle argumenter ændres til tekststrenge argStrings[i]+=',\'no\''; // Alle argumentstrengene parres med strengen ",'no'" } return argStrings; } </script>
-Dvs. værdien af argStings ændres i funktionen og huskes anden gang funktionen køres. Jeg troede at værdier der tilskrives i funktionen ville være glemt uden for funktionen, så når funktionen kaldes for anden gang så skulle den starte forfra og få samme resultat. Hvad gør jeg galt? Eller er det noget med anførselstegnene?
function skrivArgumentStreng() { for (i=0; i<argStrings.length; i++) { argStrings[i] = '[esc]''+argStrings[i]+'[esc]''; // Alle argumenter ændres til tekststrenge argStrings[i]+=',[esc]'no[esc]''; // Alle argumentstrengene parres med strengen ",'no'" } return argStrings; }
uden at have afprøvet det (jeg er især i tvivl om deklareringen af arrayCopy?), så noget i retning af: ---8<---------- function skrivArgumentStreng() { arrayCopy = new Array[argStrings.length]; for (i=0; i<argStrings.length; i++) { arrayCopy[i] = '[esc]''+argStrings[i]+'[esc]''; // Alle argumenter ændres til tekststrenge argCopy[i]+=',[esc]'no[esc]''; // Alle argumentstrengene parres med strengen ",'no'" } return arrayCopy; } ---8<----------
hvis det du vil lave er eet langt array med enkeltord bør funktionen nok være:
<script type="text/javascript"> argStrings = new Array('ID00','ID01','ID02','ID03'); function skrivArgumentStreng() { var i = argStrings.length; var j = i * 2; while ( i > 0 ) { argStrings[--j] = 'no'; argStrings[--j] = argStrings[--i] } return argStrings; } </script>
jakoba> Jeg har testet dit script med alert(skrivArgumentStreng()). Det opfører sig i stil med det jeg har i selve spørgsmålet ovenfor. Første gang funktionen kaldes skriver det korrekt:
fordi scriptet skriver sit resultatarray tilbage i arrayet argStrings[] og næste gang der kaldes er det array så dobbelt så langt.
<script type="text/javascript"> argStrings = new Array('ID00','ID01','ID02','ID03'); function skrivArgumentStreng() { var resStrings = new Array(); var i = argStrings.length; var j = i * 2; while ( i > 0 ) { resStrings[--j] = 'no'; resStrings[--j] = argStrings[--i] } return resStrings; } </script>
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.