22. september 2006 - 15:50Der er
4 kommentarer og 1 løsning
Timing problem
Jeg har et mystisk problem.
Jeg har lavet noget javascript kode, hvor en select-box skal opdateres afhængig af hvad der vælges i en anden select-box osv...
Det fungerer fint. I Firefox og Opera. I Explorer går den galt i byen, men her kommer det mystiske.
Hvis jeg indsætter f.eks. en alert('testing...') et mere eller mindre vilkårligt sted, så går det godt. Så snart jeg fjerner alert'en igen, går det galt igen. I flere select-boxe vælger den et element der er en enkelt for højt. Dvs. jeg forsøger f.eks. at sætte en new Option('123','123',false,true) på et Option objekt, da det skal være valgt på forhånd. Men det er elementet lige FØR der bliver valgt. Men kun i Explorer, og kun når jeg ikke indsætter en eller anden forsinkelse som f.eks. en alert-box.
Jeg ved ikke om det er et garbage-collection problem eller noget, men det giver mig grå hår.
Tyder umiddelbart på at IE's dom ikke rykker så hurtigt videre som de andres ved ikke om det ville hjælpe hvis du brugte newelm=document.createElement("option"); og satte attributterne og så appendede ...
- Ellers kunne man måske splitte funktionen og i 2 funktioner hvor variabler m.v. sendes fra den ene funktion videre til den anden - og den anden startede så via et setTimeout("funktionsnavn2()",10); opkald (ved ikke om IE's dom skal bruge mere end 10 ms...)
Men, som htm siger ville et eksempel på problemet rart ...
Skarpt set mclemens. Dit setTimeout forslag løste faktisk problemet. Det er faktisk nok at lave 1ms delay, idet det ekstra funtionskald åbenbart i sig selv skaber tid nok, til at DOM'en bliver genereret korrekt.
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.