Avatar billede stringbuffer Nybegynder
04. november 2000 - 14:19 Der er 13 kommentarer og
2 løsninger

Array funktion låser

Flg function er lavet for at vise et array som tekststreng:

Array.prototype.toStr = function()
{
var strJS = \"[\";
for (i=0;i<this.length;i++)
{
    if (i>0) strJS += \",\";
    if (this[i].constructor != Array)
        strJS += \"\'\"+this[i]+\"\'\";
    else
        strJS += this[i].toStr();
}
strJS += \"]\";
return strJS;
}

Funktionen virker fint med array af strenge, men når den kaldes med et array, hvis elementer selv er arrays af strenge, kommer der ingen fejl, men scriptet låser totalt.

Det er egentlig meningen at funktionen skal bruges til at overføre arrays i server-side script til client-side script, men den har samme resultat på serveren som browseren - den låser eller crasher dem.

Kan nogen umiddelbart se hvad jeg gør galt her?
Avatar billede kasseper Nybegynder
04. november 2000 - 14:28 #1
istedet for at referere til this, hvorfor laver du så ikke din toStr funktion med en parameter.
Jeg ved ikke om det er det, men det kan gøre det en hel del mere overskueligt når man forsøger at håndkøre skidtet. Mest fordi at din rekursivitet også referere til this....

Kassper
Avatar billede kasseper Nybegynder
04. november 2000 - 14:34 #2
Har du ellers prøvet at udskrive undervejs, altså sætte lidt response.write ind hist og her, for hvis browseren går i uendelig løkke så vil du får et lille praj om hvor det er....

Kasseper
Avatar billede stringbuffer Nybegynder
04. november 2000 - 14:41 #3
har op til flere gange \"håndkørt\" den, kan virkelig ikke se nogle logiske eller syntaktiske fejl...

Hvordan ville du lave det med parametere?
Avatar billede kasseper Nybegynder
04. november 2000 - 15:03 #4
Nu har jeg set at du har stillet spg. i asp også har du lavet den i VB script ???
Avatar billede stringbuffer Nybegynder
04. november 2000 - 15:09 #5
Nej, den er lavet i JScript. Har dog prøvet det som JavaScript i en browser med samme effekt... virker kun med simple arrays
Avatar billede kasseper Nybegynder
04. november 2000 - 15:11 #6
Må den blive lavet i VBScript ???
Avatar billede stringbuffer Nybegynder
04. november 2000 - 15:29 #7
Helst ikke, men hvis du har noget i VBScript, der kan klare denne gymnastik, så er oz helt fint
Avatar billede kasseper Nybegynder
04. november 2000 - 15:48 #8
jeg er lige ved at strikke noget sammen.....
Avatar billede kasseper Nybegynder
04. november 2000 - 16:09 #9
Så er den der :


<html>
<head>
    <title>Untitled</title>
</head>

<body>
<%
strJS = \"\"
dim i
dim temp
function printarray(myarray)
temp = i
i = 0




strJS = strJS & \"[\"

while i < Ubound(myarray,1) 
    if (i > 0) then
    strJS = strJS & \",\"
    end if
    if ( IsArray(myarray(i)) ) Then
    printarray myarray(i)
   
   
    else
   
    strJS = strJS & \"\'\" & myarray(i) & \"\'\"
   
    end if
i = i + 1
wend
strJS = strJS & \"]\"
i = temp
end function
%>
<%
dim test(3)
dim tast(2)
dim tist(2)
dim tyst(2)
tast(0) = \"a\"
tast(1) = \"b\"
tist(0) = \"c\"
tist(1) = \"d\"
tyst(0) = \"e\"
tyst(1) = \"f\"

test(0) = tast
test(1) = tist
test(2) = tyst
printarray test
response.write strJS

%>



</body>
</html>


udskriver [[\'a\',\'b\'],[\'c\',\'d\'],[\'e\',\'f\']]

Avatar billede kasseper Nybegynder
04. november 2000 - 17:00 #10
virker det stringbuffer ?????????????????????
Avatar billede dalbjerg Nybegynder
04. november 2000 - 17:35 #11
Hey, giv ham hans point, hvis det virker, og det gør det høj sansynligt, siden du ikke har svaret endnu...
Avatar billede jakoba Nybegynder
05. november 2000 - 00:53 #12
Kommentar til oprindeligt script.

din variabel \"i\" bliver ikke erklæret som lokal til funktionen. Den vil pr default så blive global.

og dermed vil den rekursive invokering af funktionen inde i for-løkken rode i den samme variabel med gud ved hvilket resultat.

prøv med:
  for (var i=0;i<this.length;i++)

mvh JakobA
Avatar billede kasseper Nybegynder
05. november 2000 - 08:44 #13
Ja det er rigitgt, men det er ikke det der får scriptet til at time out.
Det gør bare at man ikke kan forudsige om funktionen kører til ende....
Det er også derfor at jeg har indsat min temp variabel.
Avatar billede jakoba Nybegynder
05. november 2000 - 11:35 #14
testing ...

Hvis den variablen i i det oprindelige script gøres lokal virker det som ønsket i IE4+, NS4+ og Opera4+.

se evt testside: http://hjem.get2net.dk/Jakob.Aggernaes/temp/tostring.html

mvh JakobA
Avatar billede stringbuffer Nybegynder
05. november 2000 - 12:09 #15
Tak, det var virkelig nogle gode svar fra Jakoba og kasseper, jeg nåede desværre først at se svarene idag, så det er først nu jeg kan kvittere ;-)

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