24. september 2003 - 11:57
Der er
48 kommentarer og 1 løsning
Replace-funktion som fejler - Hvorfor?
Hej Rødder ;) Jeg har denne funktion som bliver ved at fejler... hvorfor? Lad høre :) frames.editor.document.body.innerHTML.replace(<?xml:.*?/>, ""); frames.editor.document.body.innerHTML.replace(<o:p> </o:p>, ""); frames.editor.document.body.innerHTML.replace(o:, ""); frames.editor.document.body.innerHTML.replace(<st1:.*?>, "");
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
24. september 2003 - 11:59
#1
den får faktisk hele <script language="javascript">-blokken til at fejle.... Hvis jeg fjerner funktionen fra scriptet, er der ikke nogen fejl med resten, men lige så snart jeg sætter den ind igen, fejler hele scriptet....
24. september 2003 - 12:11
#2
Du mangler tekst-afgrænserne: frames.editor.document.body.innerHTML.replace('<?xml:.*?/>', ""); frames.editor.document.body.innerHTML.replace('<o:p> </o:p>', ""); frames.editor.document.body.innerHTML.replace('o:', ""); frames.editor.document.body.innerHTML.replace('<st1:.*?>', "");
24. september 2003 - 12:11
#3
frames.editor.document.body.innerHTML.replace("<?xml:.*?/>", ""); ...osv
24. september 2003 - 12:16
#4
den fejler ihvertfald ikke nu, men den fjerner nu ikke detr den skal... Funktionen bliver benyttet i en wysiwyg-editor. Den "renser" indholdet når der bliver pastet noget ind fra word..... Den placerer jo en masse gejl i koden som man paster.... Hvordan er det egentlig muligt at kunne "gribe" når en bruger bruger ctrl+v Dette skal fx. bruges til at når brugeren paster vha. tastaturet, skal editoren automatisk køre funktionen rensWord()
24. september 2003 - 12:21
#5
Mener du at det er regulære udtryk du vil ersattet skal du fx: frames.editor.document.body.innerHTML.replace(/<\?xml:.*?\/>/, "");
24. september 2003 - 12:23
#6
en paste fra word ser fx sådan ud når man kigger på kildekoden: <P align=left>Fd</P> <P align=left>Fds</P> <P align=left>F</P> <P align=left>Sd</P> <P align=left>F</P> <P align=left><B normal? ?mso-bidi-font-weight:>Ds<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></B></P> <P align=left><B normal? ?mso-bidi-font-weight:><I normal? ?mso-bidi-font-style:>F<U>d</U>s<o:p></o:p></I></B></P> <P align=left>F</P> <P align=left>Sd</P> <P align=left>fd</P> Scriptet skulle så fjerne eksempelvis <?xml - og så frem til tagget slutter... Man kan jo ikke ligefrem påstå at ms word overholder w3c når man paster...
24. september 2003 - 12:27
#7
Du kan ikke bruge ? da det er et wildcard - brug \? i stedet.
24. september 2003 - 12:29
#8
nope - virker ikke
24. september 2003 - 12:30
#9
/<?xml:[\w \"\:-]*/>/
24. september 2003 - 12:30
#10
Man skal lige huske på at indholdet kan være dynamisk indenfor taggens'ene
24. september 2003 - 12:31
#11
Nu er jeg ikke lige ekspert i javascript og den måde som eksperten "retter" scripts'ene for at poste dem... Hvordan skal det der skrives?
24. september 2003 - 12:32
#12
Hov, der skal en \ mere: /<?xml:[\w \"\:-]*\/>/
24. september 2003 - 12:32
#13
Eller str.replace(/<\?xml:[^>]*>/mg, "");
24. september 2003 - 12:32
#14
frames.editor.document.body.innerHTML.replace(/<?xml:[\w \"\:-]*\/>/, "");
24. september 2003 - 12:33
#15
Og husk at tage resultatet igen ;) str=str.replace(/<\?xml:[^>]*>/mg, "");
24. september 2003 - 12:36
#16
Kald mig bare dum (rødmer)... Jeg fatter ikke en bønne af alle de skråatreger osv.
24. september 2003 - 12:43
#17
Skråstregerne / opdeler en regular expression i to dele. Efter første / står din expression, efter anden / dine options. \ benyttes for at sikre at det efterfølgende tegn ikke bliver fortolket som et af de "reserverede" tegn i syntaksen.
24. september 2003 - 12:47
#18
-- og husk at smide værdien tilbage: frames.editor.document.body.innerHTML = frames.editor.document.body.innerHTML.replace(/<?xml:[\w \"\:-]*\/>/, ""); -- som erik skriver !-)
24. september 2003 - 12:51
#19
den fjerner ikke en bønne fra teksten. Jeg har prøvet at copypaste det ind her fra exp., men det vil ikke virke
24. september 2003 - 12:52
#20
Hvad skriver du?
24. september 2003 - 12:54
#21
????????? hvad mener du? copy fra min kode: frames.editor.document.body.innerHTML = frames.editor.document.body.innerHTML.replace("<?xml:[\w \"\:-]*\/>", "");
24. september 2003 - 12:57
#22
Det står ingen steder. Husk /-erne i stedet for "-erne
24. september 2003 - 12:58
#23
så fejler scriptet: frames.editor.document.body.innerHTML = frames.editor.document.body.innerHTML.replace(<?xml:[\w \"\:-]*\/>, "");
24. september 2003 - 13:00
#24
Husk /-erne i stedet for "-erne
24. september 2003 - 13:02
#25
det er jo direkte copypaste herinde fra.... Jeg forstår ikke det med /-erne istedet for "-erne
24. september 2003 - 13:02
#26
document.getElementById('minSpan').innerHTML = document.getElementById('minSpan').innerHTML.replace(/<?xml:[^>]*\/>/gi, "");
24. september 2003 - 13:06
#27
så skete der sgu noget ;) Kan man tillade sig at spørge om en lille forklaring på: replace(/<?xml:[^>]*\/>/gi, ""); Hvad det forskellige betyder *står og roder genert med foden i jorden og forsøger at undgå øjenkontakt*..... Hvordan river man fat i ctrl+v - Jeg smider flere point på ;)
24. september 2003 - 13:09
#28
Hvordan kan jeg også eksempelvis hive fat at det bare skal være normalt <i> tag istedet for: <I normal? ?mso-bidi-font-style:> Den gør det fx. også med <b>
24. september 2003 - 13:11
#29
Du erstatter bare <i ....> med <i> - på samme måde som de steder du fjerner det
24. september 2003 - 13:21
#30
hmmmmm, sjovt nok skal funktionen køres flere gange for at fjerne alt. Og hvis vi kigger på fx. <b> tagget - Så placerer den nogle ekstra </b> når funktionen kører: frames.editor.document.body.innerHTML = frames.editor.document.body.innerHTML.replace(/<?xml:[^>]*\/>/gi, ""); frames.editor.document.body.innerHTML = frames.editor.document.body.innerHTML.replace("<o:p>", "") frames.editor.document.body.innerHTML = frames.editor.document.body.innerHTML.replace("</o:p>", "") frames.editor.document.body.innerHTML = frames.editor.document.body.innerHTML.replace(/<I[^>]*\>/gi, "<I>"); frames.editor.document.body.innerHTML = frames.editor.document.body.innerHTML.replace(/<B[^>]*\>/gi, "<B>"); alert('Funktion færdigkørt'); Jeg ved godt at jeg er besværlig, men jeg forsøger at lære ;) Jeg er villig til at dele flere point ud...
24. september 2003 - 13:23
#31
Det skulle jo helst være at funktionen kun skal køres en gang for at rense det hele...
24. september 2003 - 13:28
#32
derudover fjerner den heller ikke <? fra det med xml'en
24. september 2003 - 13:37
#33
Som vi har forsøgt at sige dig ;) frames.editor.document.body.innerHTML.replace(/<\?xml:[^>]*\/>/gi, ""); Hvad er det der tager flere gange om at blive fjernet?
24. september 2003 - 13:42
#34
hmmm, havde ikke lige set den sidste skråstreg..... Funktionen skal køres en 3-4 gange for at fjerne alt indholdet i dokumentet.... Det skulle jo helst være sådan at den kun skal køres én gang for at fjerne det hele.... Det varer lidt tid før jeg svarer igen - skal lige en tur til kiropraktor....
24. september 2003 - 13:44
#35
Hvad er det der tager flere gange om at blive fjernet?
24. september 2003 - 13:46
#36
alt det som skal replaces..... Funktionen skal køres 3-4 gange før det hele er replacet....
26. september 2003 - 12:44
#37
I skal jo smide svar for at få point :) Undskyld det har taget noget tid at komme tilbage, men jeg har ligget langs med min ryg efter turen til kiropraktoren.....
26. september 2003 - 12:49
#38
Jeg vil ad ikke svare før den virker. Kan du komme med eet eksempel på tekst, der skal køre igennem flere gange?
26. september 2003 - 12:52
#39
Denne tekst fra word: <P align=left>Fd</P> <P align=left>Fds</P> <P align=left>F</P> <P align=left>Sd</P> <P align=left>F</P> <P align=left><B normal? ?mso-bidi-font-weight:>Ds<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></B></P> <P align=left><B normal? ?mso-bidi-font-weight:><I normal? ?mso-bidi-font-style:>F<U>d</U>s<o:p></o:p></I></B></P> <P align=left>F</P> <P align=left>Sd</P> <P align=left>fd</P> Skal der trykkes 2 gange på fjern-funktionen for at den fjerner det hele.... Du er ihærdig :) - Men det er jo kun fair nok for os andre der skal bruge hjælp... Jeg har også sat lidt flere point af
26. september 2003 - 13:08
#40
Nå, ja, men det kunne du jo bare have sagt. Kan du ikke vælge en anden kiroprakter, hvor man kan være på nettet under behandlingen :) Det er fordi en replace med "..." i kun tager første forekomst. Du skal derfor bruger /.../g for at få alle med i et hug. Jeg tillod mig at lave en lille test: var t = ' \n<P align=left>Fd</P>\n<P align=left>Fds</P>\n<P align=left>F</P>\n<P align=left>Sd</P>\n<P align=left>F</P>\n<P align=left><B normal? ?mso-bidi-font-weight:>Ds<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></B></P>\n<P align=left><B normal? ?mso-bidi-font-weight:><I normal? ?mso-bidi-font-style:>F<U>d</U>s<o:p></o:p></I></B></P>\n<P align=left>F</P>\n<P align=left>Sd</P>\n<P align=left>fd</P>'; alert(t); t = t.replace(/<?xml:[^>]*\/>/gi, ""); t = t.replace(/<o:p>/gi, "") t = t.replace(/<\/o:p>/gi, "") t = t.replace(/<I[^>]*\>/gi, "<I>"); t = t.replace(/<B[^>]*\>/gi, "<B>"); alert(t);
26. september 2003 - 13:52
#41
hmmmm, sjovt nok: var rensHTML = frames.editor.document.body.innerHTML //t.replace(/<?xml:[^>]*\/>/gi, ""); rensHTML = rensHTML.replace(/<\?xml:[^>]*\/>/gi, ""); rensHTML = rensHTML.replace("<o:p>", ""); rensHTML = rensHTML.replace("</o:p>", ""); rensHTML = rensHTML.replace(/<I[^>]*\>/gi, "<I>"); rensHTML = rensHTML.replace(/<B[^>]*\>/gi, "<B>"); frames.editor.document.body.innerHTML = rensHTML; Som du kan se er min linie næsten identisk med den linie som du har lavet. Jeg har en ekstra \ i min linie, men ellers er de jo identiske, men jeg kan stadig ikke få den til at fjerne gejlet 1. gang - kun efter 2. gang
26. september 2003 - 13:55
#42
De er nu ikke helt identiske - prøv lige at finde dine briller *g*
26. september 2003 - 14:00
#43
de er da identiske, pånær den backslash der er foran spørgsmålstegnet, men hvi jeg fjerner den, lader den <? stående, men fjerner resten......
26. september 2003 - 14:03
#44
Du har ret: t = t.replace(/<?xml:[^>]*\/>/gi, ""); skal være t = t.replace(/<\?xml:[^>]*\/>/gi, ""); men disse linier er anderledes: t = t.replace(/<o:p>/gi, "") t = t.replace(/<\/o:p>/gi, "")
26. september 2003 - 14:08
#45
Halløjsovs :) - Så skete der sgu noget *StorSmiler* Så må du lige smide et svar :) Ved du forresten, som spurgt før, hvordan man kan registere at der bliver trykket ctrl + v Kan du også sige mig hvorfor denne ikke virker (ligger i samme funktion) - taget herinde fra exp.dk: for (var i = 0; i < frames.editor.document.body.innerHTML.length; i++) { frames.editor.document.body.innerHTML.removeAttribute("className","",0); frames.editor.document.body.innerHTML.removeAttribute("style","",0); }
26. september 2003 - 14:10
#46
26. september 2003 - 14:24
#47
Jeg ved ikke hvordan man fanger Ctrl-V Måske skal man skrive frames.editor.document.body.innerHTML=frames.editor.document.body.innerHTML.removeAttribute("className","",0); (rent gæt...)
26. september 2003 - 14:29
#48
Kun en ting at sige: Du er for sej ;) - Rejs dig op og modtag stående bifald ....*g* Ved ikke lige hvordan den anden funktion skal virke, men jeg må jo ud og surfe for at finde det...... Tak for hjælpen :)
Vi tilbyder markedets bedste kurser inden for webudvikling