Avatar billede kak Nybegynder
20. november 2003 - 09:23 Der 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.
Avatar billede thesurfer Nybegynder
20. november 2003 - 09:26 #1
prøv med:
var fil = escape('c:\billeder\mit billede.jpg');

eller også var det:
var fil = unescape('c:\billeder\mit billede.jpg');

tror det er nummmer 1..
Avatar billede erikjacobsen Ekspert
20. november 2003 - 09:28 #2
var fil = 'c:/billeder/mit billede.jpg';
filBox.innerHTML = filBox.innerHTML + '<a href="java script:markerFil(\"'+fil+'\")">' + fil + '</a><br>';
Avatar billede kak Nybegynder
20. november 2003 - 09:34 #3
escape() virker mht. mellemrum i navnet.
Men jeg har stadig problemet med backslash. Jeg kan desværre ikke bruge / da brugeren vælger filen selv.
Avatar billede erikjacobsen Ekspert
20. november 2003 - 09:36 #4
Selvfølgelig kan du det - du laver blot \ om til /
Avatar billede erikjacobsen Ekspert
20. november 2003 - 09:37 #5
Men din fejl med mellemrum er at du ikke bruger "-ere i forbindelse med
href-en i dit <a>-tag. Man bør altid:  <a href="....">
Avatar billede kak Nybegynder
20. november 2003 - 09:47 #6
<a href="...."> virker ikke mht mellemrum. Eller dvs. jeg får en anden fejl (expected ) og jeg er rimelig sikker på, at de er sat korrekt)

Er der en let metode til at ændre \ til / eller skal jeg bruge en løkke der checker alle tegn?
Avatar billede erikjacobsen Ekspert
20. november 2003 - 09:57 #7
Har du brugt mit eksempel mht "..."-erne ?

Ja:

var fil = 'c:\\billeder\\mit billede.jpg';
alert(fil);
fil=fil.replace(/\\/g,"/");
alert(fil);
Avatar billede thesurfer Nybegynder
20. november 2003 - 10:09 #8
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 "/"..
Avatar billede erikjacobsen Ekspert
20. november 2003 - 10:14 #9
Det er bare regulære udtryk, thesurfer. Det kan du læse om i en vilkårlig Javascript-bog
Avatar billede kak Nybegynder
20. november 2003 - 11:13 #10
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?
Avatar billede erikjacobsen Ekspert
20. november 2003 - 11:19 #11
Men der står også kun to enkelte \-ere i variablen fil. Den er præcis som du skal bruge den.
Avatar billede kak Nybegynder
20. november 2003 - 11:51 #12
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?!)


Her er min kode:
Avatar billede erikjacobsen Ekspert
20. november 2003 - 11:58 #13
Det er meget tænkeligt at det ikke virker hvis du blander de løsningsforslag du har fået.
Avatar billede roenving Novice
20. november 2003 - 12:18 #14
Har du prøvet med det erik gør opmærksom på:

filBox.innerHTML = filBox.innerHTML + '<a href="java script:markerFil(\''+Fil+'\',1)">' + Fil + '</a><br>';
Avatar billede roenving Novice
20. november 2003 - 12:19 #15
-- og en anelse lettere:

filBox.innerHTML += '<a href="java script:markerFil(\''+Fil+'\',1)">' + Fil + '</a><br>';
Avatar billede kak Nybegynder
20. november 2003 - 12:38 #16
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 \\.
Avatar billede erikjacobsen Ekspert
20. november 2003 - 12:41 #17
Det skal han heller ikke. Det er kun noget du skal i en javascript streng.
Du skal formentlig lave det til en rigtig streng før replace virker.
Avatar billede roenving Novice
20. november 2003 - 12:42 #18
Udskift \'erne når du lægger det i databasen !-)
Avatar billede kak Nybegynder
20. november 2003 - 12:46 #19
Kan du sige hvordan jeg laver det om til en streng?
Avatar billede erikjacobsen Ekspert
20. november 2003 - 12:48 #20
Måske

var fil = ""+fc.item();

men hvor kommer det fra?
Avatar billede kak Nybegynder
20. november 2003 - 13:27 #21
var fil = ""+fc.item() virker! Det kommer fra et FileSystemObject.

Jeg har afsat lidt flere point, da jeg synes det endte med en længere løsning.
Opretter du et svar Erikjacobsen, så jeg kan give dig point?
Avatar billede erikjacobsen Ekspert
20. november 2003 - 14:30 #22
Nej, tak, jeg synes ikke man skal ændre på pointtallet ... ingen point til mig tak.
Avatar billede kak Nybegynder
20. november 2003 - 14:41 #23
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.

Uanset hvad, så tak for hjælpen!
Avatar billede kak Nybegynder
24. november 2003 - 09:36 #24
Lukker...
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