31. januar 2007 - 14:22Der er
10 kommentarer og 1 løsning
problemer med udskrivning af en streng
Er det muligt at få javascript til at udskrive en tekst der ser nogenlunde sådan her ud: <div id='box' style='display: none;'> <div id='bg_pic'></div> <div id='bg_tekst'></div> <div id='pic'> <input style='height: 31px; width: 31px;' type='image' src='images/knap_rund_help_off.gif' onclick='return false;' onmouseover='this.src="images/knap_rund_help_over.gif"' onmouseout='this.src="images/knap_rund_help_off.gif"'> </div> <div id='tekst'> <?php include 'help/help_eksport.php'; ?> </div> <div id='top_luk'> <p style='text-align: right;'><a href='#' class='synsdata_link' onclick='vis_tekst();'>luk</a></p> </div> </div>
Jeg har forsøgt, men for en javascript fejl der siger: "strengkonstanten er uafsluttet" Kan det overhovedet lade sig gøre?
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Hvor skal strengen skrives? Der findes ikke en valid metode til at indskrive elementer i form af strenge - men det kan f.eks. lade sig gøre i et textarea.
den skal skrives vha innerHTML.. og inden du slår mig oven i hovedet fordi innerHTML er noget snavs, så vil jeg lige sige at det er hvad jeg har at arbejde med.. hvis ikke du kan foreslå nogen alternativer
Den streng der skal sættes ind, skal placeres i en <div> eller en <table>
hehe php koden er ikke mening skulle være med.. Det er meningen at der skal hentes noget data fra en database som så skal skrives på skærm og det er gennemtvunget at der skal være html-kode i den tekst der lægges i databasen. Det skal så hentes med noget der minder om AJAX, men ikke helt er det da det nu ikke er rå data der sendes og det absolut ikke er XML!
Jeg har lige et andet lidt bedre eksempel på hvordan strengen kan se ud.. <table> <tr> <td> <p>Overskrift her...</p></td> </tr> <tr> <td> <p>Selve hovedteksten her..</p> <p>måske med et billede eller to..</p> <img src="" alt="" title=""></td> </tr> <tr> <td><p><a href="#" onclick="">Link til forrige side..</a></p></td> <td><p><a href="#" onclick="">Link til næste side..</a></p></td> </tr> </table>
I AJAX behøver man nu ikke at formatere retur-data som XML ... jeg bruger f.eks. selv JSON (JavaScript Object Notation) ;o)
Dit problem består i linjebrud i strengen. Fjern alle linjebrud, så virker det formodentligt.
- og naturligvis bør du lave det med DOM i stedet for med innerHTML ... ikke mindst fordi din kode er ubrugelig under XHTML - og fordi man stort set altid har mulighed for at bruge DOM ;o)
jep, det har du selvf. ret i, men hvordan kan det lade sig gøre at lave det med DOM, når nu teksten fra databasen ser ud som det jeg skrev i min sidste kommentar..?
Og hvordan kan man nemmest fjerne alle linjebrud fra den tekst..? det kan godt laves i php hvis det er nemmere end i javascript... hvis du kan give et hint til hvordan ville det være alletiders ellers opretter jeg et spørgsmål i php-sektionen ang. det problem
Jamen, så er den grundlæggende fejl, at du lægger markup i en DB. Det er et absolut no-go! Du bør allerhøjst gemme simpel formatering ... <b>, <i>, etc. Hvad vil du f.eks. gøre i tilfælde af designskift - eller udviklinger i markup-standarden?
Løsning på problemet (omend den ikke løser dit meget alvorlige problem med formaterede data i DB'en): $str = str_replace("\r", "", $str); $str = str_replace("\n", "", $str);
Er én mulighed - og formodentligt lidt hurtigere end preg_replace, men ellers er den også en mulighed
jeg er fuldstændig enig med dig i at markup ikke hører til i DB, men det er desværre ikke mig der bestemmer det.. mht hvad jeg vil gøre.. jeg vil grine højt af min chef og kræve en voldsom overbetaling for at rette op på fejl der skyldes hans tåbelige beslutninger ;o)
Jeg kan godt forsøge det med str_replace(), det er jo nok det nemmeste, når det nu ikke kan gøres anderledes..
JavaScript kan ikke få noget ud af en brudt streng, så der er ikke andre muligheder end at ændre den, inden JS skal røre den ... og så er der jo ingen grund til at transportere undøvendige white-space tegn over WWW ;o)
Jeg lægger lige et svar, hvis du kan bruge svarene til noget =)
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.