hej jeg sidder med et irriterende problem. jeg er begyndt på ajax og den gør sådan at den henter data via en php side som udskriver fx "U,EXP,0,0,0,0,0" osv..
så når den henter dataen, så tjekker den om der findes en div allerede med et id som kaldes "AVATAR-EXP". hvis den allerede findes skal den opdaterer dens top, left og z-index position...!
hvis den IKKE findes skal den opretter den div.
men hvordan kan det være den "sletter" dens div med mine timers? kan ikke se hvad fejlen skulle være.. prøv kig her, det forklare måske problemet...!?
var users = new Array();
....
når en bruger IKKE findes så opretter den dens div osv.. også sætter jeg dette først: clearInterval(users[_name+'-reset']); clearTimeout(users[_name+'-reset']);
Jeg kan bare ikke gennemskue, hvor i dit problem, der er et problem, så jeg håber på, at du kan forklare det med en udgave, som kun viser det mest nødvendige !-)
hmm prøver lige igen. jeg henter data til ajax som er fra en php side. dette indhold ajax får ind er fx "U,roenving,0,0,0,0"
så når dataen skal håndteres gør jeg sådan: creatediv(roenving,0,0,0,0); som er en funktion
og i din funktion som kaldes creatdiv gør jeg sådan her function creatediv(bruger,z,x,c,v,q) { if ( document.getElementById(bruger+'-avatar)) { /** DIVEN ER ALLEREDE OPRETTET.. NU SKAL DEN HOLDE SETTIMEOUT I LIVE **/ clearInterval(users[bruger+'-reset']); clearTimeout(users[bruger+'-reset']);
users[bruger+'-reset'] = setTimeout("deletediv('"+bruger"')",6500); } else { /** DIVEN FINDES IKKE.. NU SKAL DEN INDSÆTTE SÅDAN DEN OGSÅ FÅR TIMEOUT **/ clearInterval(users[bruger+'-reset']); clearTimeout(users[bruger+'-reset']);
det skal siges den hele tiden tjekker om den findes.. altså den opdaterer og tjekekr hvert sekundt om diven findes.. så kan ikke rigtigt se hvorfor den alligevel fjerner diven?? er det til at forstå
gider ikke poste hele koden.. der er mange linjer og det vil alligevel være rodet for dig.. og jeg ved godt at så ville du opgive at hjæklpe mig.. og når fejlen alligevel ikke er der, så ser jeg ingen grund til at skulle skrive det hele ned..
fejlen ligger i users[...] = ... og ikke det andet
som jeg sagde..."gider ikke poste hele koden.. der er mange linjer og det vil alligevel være rodet for dig.. og jeg ved godt at så ville du opgive at hjæklpe mig.."
Den enkeltstående funktion du viser i pastebin afhænger af andre 'ting' der ikke vises.
Da alting afhænger af alle andre ting, og hver detalje kan være vigtig, er det usikkert at prøve at løse et "isoleret" problem når man kun ser brudstykker af koden.
Prøv at laver et lille kort enkeltstående eksempel der på simpleste måde demonstrerer problemet.
PS: Computerprogrammering er det mest 'per-nitten-gryn'' man kan foretage sig i denne verden. Syntaksen i programmeringssprog kræver fuld opmærksomhed på detailjer og hver et komma tæller.
PPS: Hvis din kode er rodet, kan det være en del af problemet. Måske finder du selv løsningen hvis du prøver at reproducere fejlen i et enkelt eksempel. ;}
searchjob >> udfra din kommentar (19/03-2007 14:58:14) tyder det på, du ikke har forstået, hvad jhe-ting skriver. Dette fungerer: var nTimer = setTimeout("alert('HiHo')", 6500); clearTimeout(nTimer);
- men det gør dette ikke: var nTimer = function(){setTimeout("alert('HiHo')", 6500)}; clearTimeout(nTimer);
Det skyldes, at der ikke lægges en reference til timeout'en i nTimer i andet eksempel. Måske dette kan tydeliggøre problemet: var nTimer = setTimeout("alert('HiHo')", 6500); alert("Her returneres et tal, som er referencen til timeout'en: " + nTimer);
var nTimer = function(){setTimeout("alert('HiHo')", 6500)}; alert("Her returneres ikke en reference til timeout'en, da denne ligger indlejret i en anonym funktion: " + nTimer);
Til gengæld har din kode ikke meget med AJAX at gøre. Der hersker ret stor forvirring om, hvad AJAX er - hvilket formodentligt skylde bunker af tutorials, skrevet af folk, der ikke selv har forstået AJAX (og meget andet vedrørende webkodning). Ikke mindst er w3schools.com skyldig i en stor del af denne forvirring. Hans eksempler er (som resten af hans site) proppet med fejl, mangler og udeladelser.
Når man bruger AJAX, udveksler man 'uformaterede, rå' data mellem server og klient ... aldrig HTML-formaterede data. Property'en innerHTML har aldrig været valid i nogen somhelst standard - og i forbindelse med XHTML er den totalt uden mening. Hvis browserne faktisk understøttede XHTML korrekt (hvad ingen browsere gør i øjeblikket), ville browseren dø med et XML-fejl-suk, så snart du forsøger at fyre op under innerHTML.
Når du returnerer data til klienten, bør du formatere data i XML eller JSON - og oprette HTML-elementer med DOM ... fylde data i disse - og indsætte dem i dokumentet med DOM ;o)
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.