Avatar billede pixiball Nybegynder
16. januar 2008 - 23:33 Der er 12 kommentarer og
1 løsning

Problem med toUpperCase()

Hvorfor virker min toUpperCase ikke?

Får flg. fejl "Objektet understøtter ikke denne egenskab eller metode" i linien med toUpperCase().

function les()
{
  fso = new ActiveXObject("Scripting.FileSystemObject");
  f = fso.GetFolder("D:/test2/");
  fc = new Enumerator(f.files);
  var a = [];
  var navn = "";
   
  for (; !fc.atEnd(); fc.moveNext()) {
    navn = fc.item().toString();
    navn = navn.toUpperCase();
    a.push(navn);
  }
  a.sort();
  alert(a.join("\n"));
}
Avatar billede roenving Novice
17. januar 2008 - 00:11 #1
Prøv at alerte navn, så du kan se om toString-metoden har virket, som du forventer det !-)
Avatar billede olebole Juniormester
17. januar 2008 - 00:27 #2
<ole>

http://msdn2.microsoft.com/en-us/library/ecczf11c(VS.85).aspx  ;o)

/mvh
</bole>
Avatar billede pixiball Nybegynder
17. januar 2008 - 23:44 #3
roenving ==> Jeg har haft en alert(navn) efter 'navn = fc.item()' og den viser det rigtige indhold. (.toSting efter fc.item() er fjernet)

Sjovt, hvis jeg sætter flg. ind i functionen
  var str="Hello world!";
  document.write(str.toUpperCase());
så skrives "Hello world" med store bogstaver.

ole ==> Functionen er JavaScript og hvis jeg sætter 'navn = new string()' i functionen giver det fejl.
Avatar billede pixiball Nybegynder
18. januar 2008 - 00:07 #4
Ved ikke om det kan have noget med tilskrivningen af værdien til variablen navn at gøre. Hvis jeg forsøger at bruge toUpperCase på variablen navn efter at den har fået værdien via fc.item() går det i fejl. Men hvis jeg tilskriver variablen navn værdien sådanne "navn = 'eksperten'" så virker toUpperCase fint
Avatar billede olebole Juniormester
18. januar 2008 - 19:10 #5
Nej, det er ikke JavaScript - det er JScript

Det undrer mig nu, du ikke får en fejl, når du kører scriptet. Jeg er helt sikker på, denne linje vil udløse en fejl:
    navn = fc.item().toString();

Ganske som forventet virker dette da også fint hos mig:

function les() {
  fso = new ActiveXObject("Scripting.FileSystemObject");
  f = fso.GetFolder("C:/Oles/");
  fc = new Enumerator(f.files);
  var a = [];
  var navn = "";
  for (; !fc.atEnd(); fc.moveNext()) {
    navn = new String( fc.item() );
    navn = navn.toUpperCase();
    a.push(navn);
  }
  a.sort();
  alert(a.join("\n"));
}
Avatar billede olebole Juniormester
18. januar 2008 - 19:16 #6
Du kan prøve at skrive:

  for (; !fc.atEnd(); fc.moveNext()) {
    alert(typeof fc.item().toString)
  ... osv ...

- hvilket returnerer 'undefined'
Avatar billede olebole Juniormester
18. januar 2008 - 19:34 #7
fc.item() returnerer ikke en streng, men et file-object:
    http://msdn2.microsoft.com/en-us/library/1ft05taf(VS.85).aspx

Hvis du alert'er det, opfører det sig umiddelbart som en streng - og du kan bruge String-construct'eren på det. Det ér dog et objekt med helt andre metoder og properties end et streng objekt.

  for (; !fc.atEnd(); fc.moveNext()) {
    alert(fc.item().size)
  ... osv ...

- vil således give dig filernes størrelse.

I virkeligheden burde du gøre sådan:

function les() {
  fso = new ActiveXObject("Scripting.FileSystemObject");
  f = fso.GetFolder("C:/Oles/");
  fc = new Enumerator(f.files);
  var a = [];
  var navn = "";
  for (; !fc.atEnd(); fc.moveNext()) {
    navn = fc.item().path;
    navn = navn.toUpperCase();
    a.push(navn);
  }
  a.sort();
  alert(a.join("\n"));
}
Avatar billede pixiball Nybegynder
18. januar 2008 - 23:19 #8
OleBole det virker - super og mange tak for hjælpen og lærdommen.
Avatar billede pixiball Nybegynder
18. januar 2008 - 23:20 #9
Olebole send lige et svar....
Avatar billede olebole Juniormester
18. januar 2008 - 23:45 #10
Selvtak. JavaScript så dagens lys i Netscape 2.0 (1995, såvidt jeg husker). Det var midt under 'Den Store Browserkrig' og Microsoft lavede derfor deres egen version, kaldet JScript. JavaScript vedligeholdes i dag af Mozilla:
    http://developer.mozilla.org/en/docs/JavaScript

Begge sprog bygger (ligesom f.eks. Flash's ActionScript) på ECMA standarden for scriptsprog, men har en del forskelle. Således kan kun JScript instantiere ActiveX objekter.
Avatar billede pixiball Nybegynder
19. januar 2008 - 00:03 #11
endnu en gang tak
Avatar billede pixiball Nybegynder
19. januar 2008 - 00:04 #12
vil det sige at man skal benytte JScript i stedet for Javascript på hjemmesider - eller vil det så kun virke under MS's browser
Avatar billede olebole Juniormester
19. januar 2008 - 02:30 #13
JScript virker kun i IE. Brug JavaScript i stedet - så virker det i alle browsere
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