20. november 2003 - 09:23Der er
23 kommentarer og 1 løsning
Mellemrum og backslash i variabler
Jeg har en variabel der er stien og navnet på en fil. Det vises som et link, f.eks. sådan her: var fil = 'c:\billeder\mit billede.jpg'; filBox.innerHTML = filBox.innerHTML + '<a href=java script:markerFil("'+fil+'")>' + fil + '</a><br>';
Det ene problem er, at når der er mellemrum i filnavnet, bliver linket ikke korrekt. I dette tilfælde vil der blive linket til "c:\billeder\mit". Selve teksten til linket bliver vist korrekt.
Det andet problem er, at når jeg kalder en anden funktion, bliver backslash fjernet, og den anden funktion kan derfor ikke finde filen.
Jeg ved at man kan lave dobbelt-backslash for at forhindre det, men da filen bliver udvalgt at brugeren, skal jeg have funtionen til at gøre det automatisk.
erikjacobsen> Jeg har set noget der ligner '"/\\/g,"/"' en del gange.. Kan du ikke lige skære det ud i pap for fortælle hvad der egentligt står? Jeg kan regne ud at den erstatter "\\" med "/"..
Nu et det kun en enkelt \ jeg vil erstatte, og jeg har derfor forsøgt at tilpasse fil=fil.replace(/\\/g,"/"); uden held. Hvordan skal det stå, når det er en enkelt man vil erstatte?
Hmmmm, der er noget her, som virker helt forkert. Som sagt skal det bruges til at udvælge filer, men \ og mellemrum (go nu også tal) giver en del problemer!!!
var fil =escape(fc.item()); var fil = fil.replace(/\\/g,"/"); filBox.innerHTML = filBox.innerHTML + '<a href=java script:markerFil("'+Fil+'",1)>' + Fil + '</a><br>';
"Escape" får problemet med mellerum væk. Jeg har ikke fået det til at virke, ved at bruge " som i dit sksempel.
.replace erstatter ikke \ med / uden at jeg kan se hvorfor?!
Endelig har jeg opdaget, at hvis navnet starter med et tal, virker det heller ikke (måske fordi der er \ foran tallet?!)
Ok, nu kom jeg en smule længere. Der skal kun bruges enkelt-plinger inde i funktionen, altså (\''+Fil+'\',1).
Nu virker mellemrum, og jeg undgår at bruge escape. Men replace giver fejlen "object doesnt support this property or method". Hvis jeg i stedet for: "var fil = fc.item();" bruger: "var fil = 'c:\mine billeder\mit billede.jpg'" ... virker det, dog bliver \ erstattet med mellemrum. Bruger jeg: "var fil = 'c:\\mine billeder\\mit billede.jpg'" ... virker det helt som det skal, men som sagt kan jeg jo ikke bede brugeren om at skrive \\.
Jeg var nu glad for hjælpen, og derfor satte jeg lige flere point af. Det kan jeg ikke ændre ned igen, og jeg synes nu du skal have nogle point. Hvis du vil have nogen, så bare sige hvor mange.
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.