27. april 2004 - 00:52Der er
25 kommentarer og 1 løsning
Begrænsninger ved Rekursive kald?
Jeg har lavet en rekursiv funktion, som virker men virker som om at den er begrænset til 6 rekursive kald. Skyldes det begrænsninger i JavaScript, IE6 eller er der en fejl i programmet?
Programmet skal sætte alle elementer som starter med "pkt" i en hierakisk menu til at være display="none", men den springer over når den når til 7' rekursivitet.
function SAN(obj) { if (typeof(obj(0)) != "undefined") { nrs = parseInt(obj.length); for (i = 0;i < nrs; i++) { if (obj(i).id.substring(0,3) == "pkt") { obj(i).style.display = "none"; SAN(obj(i).children); } } } }
Der er nogle memory-begrænsninger som browseren sætter ...
-- og de kan jo blive ret voldsomme, når man når ud i det 7. kald ...
Bare tænk på, at det endnu ikke er lykkedes nogle at folde et stykke silkepapir på størrelse med en fodboldbane mere end 7 gange, og der er det kun fordoblinger ...
-- men måske har det betydning, at din syntaks principielt er ulovlig (og noget er overflødig !-)
function SAN(obj) { for (i = 0;i < obj.length; i++) { if (obj[i].id.substring(0,3) == "pkt") { obj[i].style.display = "none"; (obj[i].children)?SAN(obj[i].children):return; } } }
-- og så fik jeg da også lavet nogle immediate kald i stedet for at ophobe variabler !-)
Mange tak for forslagene. Der var dog ingen af dem som var med til at finde løsningen, men der var nogle gode forslag til optimering, som jeg takker meget for. Løsningen lå i at jeg ikke havde defineret nye objecter/variabler ved hver rekurtive kald hvorfor de gamle blev overskrevet. Det der manglede var ganske simpelt: var i; var nrs;
Når man er nødt til at oprette et spm, fordi man har begået en seriøs bummert i sin kode, er det almindelig god Eksperten-stil at give folk, der har brugt sin fritid på at hjælpe med at udbedre ens fejl, lidt points. Det havde været klædeligt, om du havde tilbudt roenving nogle points for sin ulejlighed med at prøve at hjælpe dig.
Fair.. Jeg er faktisk fuldstændig enig med dig olebole. Men har også en gang fået på puklen for at give point til højre og venstre selv om mit spørgsmål ikke var besvaret, da det gav en dårlig moral. Det endte med en længere debat. Anyway. Jeg opretter lige et spm. på 20p - roenving, og takker for dit svar.
Det kunne nu være interessant at høre hvad adm.'s holdning/retningsliner er på området :-) Jeg vil nødig gentage eller være medvirken til en uheldig stil.
Nu skal man jo passe på, hvad man siger (ikke at det plejer at ligge til mig *LooL*), men det er min opfattelse, at langt de fleste brugere finder det på sin plads at give points for indsatsen, selvom spm måske ikke besvares fuldt ud.
Vi skal huske på, at der bag hver svarer sidder et vildt fremmed menneske, der fravælger andre ting i livet for at hjælpe spørgeren med hans/hendes problem. Det lyder måske lidt patetisk - og det er jo frivilligt at hjælpe - men et lille skulderklap finder jeg nu helt på sin plads.
For min skyld gør det ikke spor, at pointsystemet ikke kun afspejler viden - men også hjælpsomhed og flid.
I den anden grøft ligger naturligvis den uundgåelige klaphat, der så vil svare "bumser og gnuer" i hvert andet spørgsmål - for at opnå points for sin 'flid'. Meeeeeeeen ... det burde være muligt at finde en rimelig balance - omend man nok aldrig helt undgår grænse-diskussioner ;o) /mvh
PS: RESPEKT for din prompte reaktion!
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.