Avatar billede jens426 Nybegynder
31. oktober 2010 - 00:30 Der er 11 kommentarer og
1 løsning

charAt is not a function

har følgende kode

Number.prototype.IsANumber = function(a)
{

  if (a.charAt(0) == "-") {
        {alert("chatAt virker ikke, error kode i firefox a.charAt is not a fuction");}

    for(var i = 0; i < a.length;i++){
   
      if (a.charAt(0) == "-")
        {alert("denne charat giver ingen fejl");        }
    }
   
    return result;
}


Nogen der kan se hvorfor den første a.charAt(0) == "-" crasher javascript, den anden a.charAt(0) == "-" crasher ikke, hvilket jeg ved ved at udkommentere den første

Dette er et forståelse problem ikke ???
Avatar billede erikjacobsen Ekspert
31. oktober 2010 - 00:46 #1
Hvis a er et tal/number, så skal den give den besked. Og hvis a er et tal, så kommer du slet ikke ind i for-løkken.
Avatar billede jens426 Nybegynder
31. oktober 2010 - 14:03 #2
følgende giver ingen fejl

Number.prototype.IsANumber = function(a)
{

    for(var i = 0; i < a.length;i++){
   
      if (a.charAt(0) == "-")
        {alert("denne charat giver ingen fejl");        }
    }
   
    return result;
}

følgende giver sejl

Number.prototype.IsANumber = function(a)
{

  if (a.charAt(0) == "-") {
        {alert("chatAt virker ikke, error kode i firefox a.charAt is not a fuction");}

    for(var i = 0; i < a.length;i++){
   
      if (a.charAt(0) == "-")
        {alert("denne charat giver ingen fejl");        }
    }
   
    return result;
}
Avatar billede erikjacobsen Ekspert
31. oktober 2010 - 15:06 #3
Som jeg skrev: Kig på typen af parameteren a. Hvis den er et tal/number, kan man ikke sige .charAt på den. Og så kommer du heller ikke ind i for-løkken.
Avatar billede majbom Novice
31. oktober 2010 - 19:05 #4
du kan jo prøve at smide en alert ind efter denne linje:

for(var i = 0; i < a.length;i++){

og se hvor mange gange du får den vist ;)
Avatar billede jens426 Nybegynder
01. november 2010 - 14:34 #5
det mærkelige er at hvis det er inde i forløkken er der ingen crash af programmet.

det er kun hvis det er uden for forlykken
Avatar billede erikjacobsen Ekspert
01. november 2010 - 15:17 #6
Det er ikke mærkeligt, for programmet kommer måske slet ikke derind.

For at gentage mig selv: hvad er typen af parameteren, du kalder: a ?

Eller: Kan du give et eksempel hvor du kalder funktionen ?
Avatar billede jens426 Nybegynder
01. november 2010 - 16:07 #7
a er en streng

her er et eksempel

<script type="text/javascript">

function Number(){

}

Number.prototype.IsANumber = function(a)
{

  if (a.charAt(0) == "-") {alert("Hvor ses denne besked ikke"); // indexname1

    for(var i = 0; i < a.length;i++){
   
      if (a.charAt(0) == "-")
        {alert("hvorfor ses denne besked hvis linie indexname1 slette ");        }
    }
   
    return result;
}

test = new Number;
test.IsANumber("-");


</script>
Avatar billede erikjacobsen Ekspert
01. november 2010 - 19:19 #8
Jeg må erkende, at jeg ikke kan se problemet. I dit eksempel er der ingen fejl med .charAt (...man skal lige tilføje en manglende parentes...), fordi funktionen kaldes med en streng.

Der må ske det, at du ikke kalder den med en streng. Kan du vise et eksempel, der giver den oprindeligt anførte fejl?
Avatar billede jens426 Nybegynder
02. november 2010 - 10:59 #9
Ja det var en glemt parente der var problemmet.

tak for hjælpen, send et svar hvis du vil have point.
Avatar billede erikjacobsen Ekspert
02. november 2010 - 11:19 #10
Nej tak ;) Jeg samler ikke...
Avatar billede jens426 Nybegynder
21. maj 2012 - 17:15 #11
lukker tråden
Avatar billede jens426 Nybegynder
08. januar 2013 - 01:45 #12
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