Avatar billede oasen Nybegynder
14. maj 2003 - 19:25 Der er 8 kommentarer og
1 løsning

Tilføje ny tekst til eksisterende tekst i en div

Jeg har lavet en chat, der er opbygget med en usynlig iframe, hvori teksten trækkes ud af databasen og sendes til en div på modersiden med innerhtml.

Hver gang iframen opdaterer, indlæses alt tekst igen i div'en, hvilket bevirker at musens cursor "hopper" lidt, hvis den holdes over teksten, der opdaterer.

Jeg tror, jeg kan undgå dette ved kun at "bygge ovenpå" den tekst, der står der i forvejen. Dvs. kun sende tekst til div'en, der f.eks. er tilføjet til databasen for max 3 sek siden.

Men hvordan tilføjer jeg den nye tekstblok fra databasen til den eksisterende i div'en?
Avatar billede -master-d- Nybegynder
14. maj 2003 - 19:50 #1
Det gør du således :

Dette er taget ud fra en chat jeg selv har lavet.

i din skjulte frame :

<script>
chatHTML = "<font>ny tekst</font><br>"
if (parent.frames['chatten'].opdaterSpan) {
parent.frames['chatten'].opdaterSpan(chatHTML);
setTimeout("self.location.reload(true)",900);
}
</script>



På siden der viser teksten sætter du dette ind.

<script>
function opdaterSpan(chatHTML) {
if (document.all) document.all['minDiv'].innerHTML = chatHTML;
}
</script>


OBS! alle navnene skal skiftes : chatten, mindiv etc..

Det var det håber du forstå hvad jeg mener
Avatar billede -master-d- Nybegynder
14. maj 2003 - 19:51 #2
Hov havde nær glemt ..

På siden der viser teksten skal dette stå i <body>

onLoad="parent.frames['skjultFrame'].location.reload(true);"
Avatar billede oasen Nybegynder
14. maj 2003 - 20:11 #3
Kan du uddybe det en smule? Nedenfor har jeg vist mit eget eksempel:


Siden der viser teksten: =======================

function nytekst(div,tekst) {

if (document.getElementById) {
    document.getElementById(div).innerHTML = tekst
  } else if (document.all) {
    document.all[div].innerHTML = tekst
  } else if (document.layers) {
    document[div].document.open();
    document[div].document.write(tekst);
    document[div].document.close();
  }
}

</script>

<div id="beskeder"></div>


Skjult iframe: =================================

<body onLoad="parent.nytekst('beskeder','Ny streng til diven, der indeholder alle beskeder');">
Avatar billede -master-d- Nybegynder
14. maj 2003 - 20:38 #4
Du mangler en funktion i din skjulte frame som reloader hvert 3. sekund og som sætter ny tekst ind.

Kommer lige med et eksempel på dit script igen.
Avatar billede -master-d- Nybegynder
14. maj 2003 - 20:41 #5
I din skjlut fram skal du have dette script.

<script>
chatHTML = "<font>denne tekst skrives hvert tredje sekund.</font><br>"
if (parent.framenavn.nytekst) {
parent.framenavn.nytekst(chatHTML);
setTimeout("self.location.reload(true)",3000);
}
</script>

samt i body :

<body onLoad="parent.nytekst('beskeder','Ny streng til diven, der indeholder alle beskeder');setTimeout("self.location.reload(true)",3000);
Avatar billede oasen Nybegynder
14. maj 2003 - 21:58 #6
Funktionen skriver til diven...?

Men jeg kan slet ikke se, hvad der er meningen med den funktion...
Avatar billede Slettet bruger
18. maj 2003 - 11:15 #7
Søg efter "Olebole-chat" her på Eksperten. Han har lavet et færdigt eksempel, som du frit kan kopiere eller ændre efter behov.
Avatar billede oasen Nybegynder
21. maj 2003 - 23:45 #8
Ja, men jeg vil gerne lære det selv :(
Avatar billede Slettet bruger
24. maj 2003 - 20:18 #9
Så er der ingen bedre vej end at nærstudere andres eksempler og selv prøve sig frem bagefter.
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