Avatar billede javanic Nybegynder
28. marts 2005 - 21:29 Der er 2 kommentarer og
1 løsning

DIV's innerHTML viser kun den 1. linie af den opdaterede tekst?

Hej allesammen,

jeg har lavet en lille wysiwyg-editor, der anvendes til at brugere kan redigere tekst. Teksten der skal redigeres vises i et hovedevindue (opener) og selve editoren i et popup-vindue.

I den forbindelse sender jeg den redigerede HTML tilbage til hovedevinduet, når brugeren har foretages sine ændringer og trykket gem.

problemet er så bare, at det ikke er HELE den indtastede tekst, der rent faktisk vises i det div-tag jeg sender det til, men (umiddelbart) kun den første linie....

jeg ved dog, at teksten reelt sendes tilbage, da ændringer vises i det, brugeren vælger at opdaterer og godkende ændingerne. Så problemet er ikke at få teksten med tilbage, men altså kun at det skal VISES korrekt i mit DIV-tag.

Jeg sender informationerne fra editoren vha:
-------------------------------

<KLIP>

window.opener.document.getElementById(divId).innerHTML = kode[1];
window.opener.document.form.elements[divId].value = kode[1];

</KLIP>



og jeg har så i hovedevinduet mit div-tag og et hidden inputfield, der bruges når jeg submit'er formen:
--------------------------------

<KLIP>

<div id="content" style="width: 100%; height: 285px; overflow: auto;">
    <? print $page['content']; ?>
</div>

<input type="hidden" name="content" value="java script: window.document.getElementById('content').innerHTML;">

</KLIP>




...jeg kan simpelthen ikke se hvad fejlen er, så det håber jeg lidt på, at der er en anden der kan.. ;-)

på forhånd tak
Avatar billede javanic Nybegynder
28. marts 2005 - 21:36 #1
jeg skal måske lige tilføje, at min editor åbnes vha. nedenstående funktion:


<KLIP>

var popUpWin=0;
function OpenEditor(divId, textToEdit)
{
var URLStr    = "../Editor/editor.htm?divId="+divId+"&txt="+textToEdit;
var left     = 150;
var top     = 50;
var width     = 750;
var height     = 500;
   
if(popUpWin)
{
  if(!popUpWin.closed)
    popUpWin.close();
}
popUpWin = open(URLStr, 'popUpWin', 'toolbar=no,location=yes, directories=no, statusbar=no, menu=no,resizable=yes,copyhistory=no,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
}
</KLIP>


...og, at jeg i mit hovedevindue kalder den med navnet på mit DIV-tag som parameter:

<KLIP>

...onClick="OpenEditor('content');"

</KLIP>
Avatar billede javanic Nybegynder
28. marts 2005 - 23:19 #2
Sort... det lader til at det kun er når der overføres ren tekst, at den kun tager viser den første linie i div-tag'et.

så jeg har løst det ved at sætte hele den redigerede tekst ind i en simpel tabel. Så hvis andre skulle løbe ind i samme problem kan det altså løses med noget ala:

var ny_kode = "<table><tr><td>"+ kode[1] +"</td></tr></table>";
window.opener.document.getElementById(divId).innerHTML = ny_kode; // kode[1];
window.opener.document.form.elements[divId].value = ny_kode;// kode[1];

...så er der ingen ko på isen - men sort er det ;-) ??
Avatar billede javanic Nybegynder
28. marts 2005 - 23:32 #3
fandt også det oprindelige problem - ...der var et fuc... whitespace !! Grrr...
men ok - nu spiller det igen.
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