nåå, det ser ud til du brugte onMouseover=document.getElementById('feltet"+felt_id+"').src til noget andet (og selvfølgelig var det et billede - dumt tænkt af mig ;-)
Så bare ret dette tilbage til det oprindelige: document.write("<div id='felt"+felt_id+"' style='POSITION: absolute;top:"+top_px+";left:"+left_px+";'>");
selve sætningen er nu rigtigt skrevet op og der er ingen javascript i den, som kan lave fejl.
Så enten har du lavet en fejl tidligere eller også har du ikke defineret en af de tre variabler du bruger i ovenstående sætning (felt_id, top_px og left_px)
Når jeg sætter <div id="vis_chat"> over <script blablabla>
Så udskriver den KUN brugerne, det jo også det jeg vil have, men den skal vise brugerne OVEN i selve chat.php, altså hvor man kan se brugerne på felterne og baggrunden, hvis i forstår.
Du mangler både at afslutte dit div-tag og a-tag, men også din javascript-streng: document.write("<div id='felt"+felt_id+"' style='POSITION: absolute;top:"+top_px+";left:"+left_px+";'>"); document.write("<a style='cursor: hand' onMouseover=document.getElementById('feltet"+felt_id+"').src='felt_over.gif' onMouseout=document.getElementById('feltet"+felt_id+"').src='felt.gif' onclick='ryk("+left_px+","+top_px+","+felt_id+");'></a></div>");
jeg tilføje blot: </a></div>"); til linien med document.write("<a style='cur....
Jeg sagde at du skulle tilføje </a></div> i document.write("<a style='cur.... sætningen. Men du afslutter jo netop disse to tags senere hen (når du printer billedet ud). Havde lige overset den, så du må hellere slette de to afsluttende tags igen, så der står: document.write("<a style='cursor: hand' onMouseover=document.getElementById('feltet"+felt_id+"').src='felt_over.gif' onMouseout=document.getElementById('feltet"+felt_id+"').src='felt.gif' onclick='ryk("+left_px+","+top_px+","+felt_id+");'>");
hmm er du sikker på at funktionen ikke bliver aktiveret når du trykker på felterne?
Prøv at test det af ved at skrive: function ryk(l,t,felt){ alert("TEST"); you.style.top=t; you.style.left=l; ynavn.style.top=t+47; ynavn.style.left=l; }
Hvis alert-boksen popper op, så virker bliver funktionen kaldt og noget andet må være i vejen. Måske kan du bare ikke se you og ynavn fordi de er gemt et sted bag billederne.
Det var mere fordi jeg ikke er sikker på den virkelig bliver blokeret. Grunden til at du ikke kan se you og ynavn er, så vidt jeg kan se, at de gemmer sig omme bag alle felterne.
Nu var det så jeg ville have dig til at lave en alert-boks, og den eneste grund dertil er at jeg ville vise at funktionen faktisk bliver kørt. Det virker i hvert fald her hos mig - men jeg har heller ikke hele siden at rode med. Det ville hjælpe utrolig meget hvis du kunne vise siden og lægge et link til den.
Grunden til at de to (you og ynavn) lægger sig omme bag felter er nok at de bliver lavet før felterne så de får et lavere z-index (du har vel også sat position:absolute; på de to, ikke?). Så du kan prøve at rode lidt i stylen med z-index eller flytte dem et andet sted hen - fx efter det script du kører her: <script type="text/javascript"> function ryk(l,t,felt){ you.style.top=t; you.style.left=l; ynavn.style.top=t+47; ynavn.style.left=l; }
felt_id = 1;
for (row = 0; row < 6; row++) { top_px = row*60; for (col = 0; col < 15; col++) {
left_px = col*25;
document.write("<div id='felt"+felt_id+"' style='POSITION: absolute;top:"+top_px+"px;left:"+left_px+"px;'>"); document.write("<a style='cursor: hand' onMouseover=document.getElementById('feltet"+felt_id+"').src='char1.gif' onMouseout=document.getElementById('feltet"+felt_id+"').src='logo.png' onclick='ryk("+left_px+","+top_px+","+felt_id+");'>"); document.write("<img border='0' src='logo.png' width='40' height='60' alt='' id='feltet"+felt_id+"'></a></div>"); // generer kode til position (left_px, top_px) med felt = felt_id felt_id++; } } </script> <div id="you" style="position:absolute;">YOU</div><div id="ynavn" style="position:absolute;">YNAVN</div> </div>
og hvis vi lige til sidst skal have mozilla med i løbet: <script type="text/javascript"> function ryk(l,t,felt){ you = document.getElementById("youId"); ynavn = document.getElementById("ynavnId"); you.style.top=t+"px"; you.style.left=l+"px"; ynavn.style.top=t+47+"px"; ynavn.style.left=l+"px"; }
felt_id = 1;
for (row = 0; row < 6; row++) { top_px = row*60; for (col = 0; col < 15; col++) {
left_px = col*25;
document.write("<div id='felt"+felt_id+"' style='POSITION: absolute;top:"+top_px+"px;left:"+left_px+"px;'>"); document.write("<a style='cursor: hand' onMouseover=document.getElementById('feltet"+felt_id+"').src='char1.gif' onMouseout=document.getElementById('feltet"+felt_id+"').src='logo.png' onclick='ryk("+left_px+","+top_px+","+felt_id+");'>"); document.write("<img border='0' src='logo.png' width='40' height='60' alt='' id='feltet"+felt_id+"'></a></div>"); // generer kode til position (left_px, top_px) med felt = felt_id felt_id++; } } </script> <div id="youId" style="position:absolute;">Dig</div><div id="ynavnId" style="position:absolute;">Dit navn</div> </div>
Jeg håbede du selv vidste hvad you og ynavn var... men det skulle forestille at være de to elementer du vil rykke rundt på - fuldstændig ligesom før: function ryk(l,t,felt){ you.style.top=t; you.style.left=l; ynavn.style.top=t+47; ynavn.style.left=l; } De to elementer du rykker rundt på her er de samme to - scriptet er ikke ændret på nogen måde. Jeg bruger bare nogle andre id'er (youId og ynavnId) så der ikke opstår en konflikt med navnene (hvilket medfører fejl). Jeg tænker mig at elementet med id'en youId er det samme element som billedet af dig selv, som skal hoppe rundt. Hvad ynavn er ved jeg ikke - men jeg håbede så du vidste det, da du har lavet det oprindelige script.
undskyld forsinkelsen - havde noget andet jeg skulle lave.
Vi dropper lige ynavn denne gang, da den åbenbart ikke har en rigtig funktion. I det seneste script du postede er der en (måske) tastefejl, da du mangler at starte ryk-funktionen: function ryk(l,t,felt) { you = document.getElementById("youId"); you.style.top=t+"px"; you.style.left=l+"px"; } Og så har du taget de billeder jeg brugte i mit eksempel - det skal nok være nogle andre.
Hvis iframen ligger i det dokument med felterne kan du ordne det i ryk-funktionen: function ryk(l,t,felt) { you = document.getElementById("youId"); you.style.top=t+"px"; you.style.left=l+"px"; window.ryk.location.href = "ryk.php?felt="+felt+"&t="+t+"&l="+l; }
Jeg tror dog du bliver nødt til at kalde iframen eller funktionen for noget andet, da der nok fremkommer en navne-konflikt her. Ellers skal du prøve med: window.frames["ryk"].location.href = "ryk.php?felt="+felt+"&t="+t+"&l="+l;
Ja, i hvert fald når man kun bruger javascript og php som her. Java eller Flash kunne måske nok lave det meget pænt, men her må vi jo nøjes med en god gang reload, som du selv foreslår.
Nu ved jeg ikke hvor langt du er nået med det hele - altså om det til dels er muligt at se de forskellige brugere og deres færden (måske lidt langsommere). Men pointen ville jo være at sætte en timeout når siden er loadet og her kunne du jo så fint bruge den loadet-funktion du har: <body onload="loadet();">
Kan det ikke passe at: <script> document.getElementById('vis_chat').innerHTML = "<?php include("db.php"); $kl = mysql_query("SELECT * FROM naturechat_brugere ORDER BY felt desc"); WHILE($row1 = mysql_fetch_array($kl)){ echo "<div id='$row1[brugernavn]' align='center' style='POSITION: absolute;'><img src='$row1[figur]' title='$row1[brugernavn]' alt='$row1[brugernavn]>'><br />$row1[brugernavn]</div><br />"; } ?>"; </script>
Printer de forskellige brugere ud, som er logget ind i chatten? Så gælder det vel bare om at placere dem i det rigtige felt - hvis du altså på forhånd ved hvad det felt er. Men hvis du kender rækken og søjlen kan du også regne dig frem til positionen ved at gange rækkenummeret med 60 og søjlenummeret med 25 - så burde de cirka være der hvor de skal være.
Men nu har jeg fået blink og klik lydene væk, men så er det lige. Når jeg klikker rundt på min brugere "KICK" så når jeg rykker til en felt, så er det ligesom at der er 2 brugere "KICK".
Altså her kommer mit spg: Hvordan kan det være at når min bruger rykker, så er det ligesom der kommer 2 kopire og havner i samme felt!?
altså når du klikker på et felt så flytter brugeren sig derhen, men samtidig bliver en kopi af brugeren tilbage på det forrige felt eller ser det bare ud som om der er to brugere på samme felt?
Ja, altså: lige når man klikker på et felt så går den over på feltet også kan man se en kopi af sig selv på det forrige felt, også går de til det nye felt (kopien og den real).
det er efterhånden svært for mig at overskue scriptet, for i det jeg arbejder ud fra virker det jo fint nok - kunne du ikke smide det du har indtil videre online, så man kan se på det?
Desværre ikke. For det første ligger det i en mappe med kode for det anden ligger det på min localserver, hvor jeg skal åbne op for alle jer andre. for det tredje, har jeg lavet det mere andvenceret sådan den ikke blinker og klikker..
Men du ved jo godt hvad fejlen er.
kan du ikke fikse det på en eller anden sjov måde?
Ahh, nu tror jeg jeg kan se problemmet. Det skyldes højst sandsyneligt at du laver en dobbelt div med brugernavnet i - en vi kaldte youId, som vi kan flytte rundt med og en anden som er genereret med php, sammen med de andre. Men når du så rykker youId bliver div'en fra php-koden jo ikke flyttet før siden opdateres.
Så tænkte jeg at det ville være lettest hvis dit mysql-sætning ikke tog ens eget brugernavn med: <script> document.getElementById('vis_chat').innerHTML = "<?php include("db.php"); $kl = mysql_query("SELECT * FROM naturechat_brugere WHERE brugernavn <> '".$row[brugernavn]."' ORDER BY felt desc"); WHILE($row1 = mysql_fetch_array($kl)){ echo "<div id='$row1[brugernavn]' align='center' style='POSITION: absolute;'><img src='$row1[figur]' title='$row1[brugernavn]' alt='$row1[brugernavn]>'><br />$row1[brugernavn]</div><br />"; } ?>"; </script> <script>
altså: WHERE brugernavn <> '".$row[brugernavn]."' skulle gerne tage alle navne med undtagen ens eget brugernavn (som dermed ikke bliver printet ud). Det bliver selvfølgelig et problem hvis du brugere har samme brugernavn (hvis de da kan det), men ellers skal du bare teste i WHERE sætningen for noget andet, som er unikt for hver enkel bruger.
det var super - sad lige og så en spændende klassisk James Bond, så jeg havde ikke lige tid til at svare tilbage før nu. Men du fandt jo selv ud af det :-)
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.