2010-07-26 5 views
8

J'ai un événement onchange qui met à jour un formulaire, et dans le processus de mise à jour il appelle une fonction pour calculer l'expédition. Je ne sais pas pourquoi, mais je reçois l'erreur suivante lorsque je tente d'appeler la fonction:Qu'est-ce qui provoque l'erreur "Uncaught TypeError: number n'est pas une fonction"

Uncaught TypeError: number is not a function

La fonction, shipping, ressemble à ceci:

function shipping(weight) 
{ 
    var flat 

    switch(weight) 
    { 
     case 1: 
     case 2: 
     case 3: 
      flat = 32.00; 
      break; 

     case 4: 
      flat = 18.50; 
      break; 

     case 5: 
      flat = 15.80; 
      break; 

     case 6: 
      flat = 14.00; 
      break; 

     case 7: 
      flat = 12.71; 
      break; 

     case 8: 
      flat = 11.75; 
      break; 

     case 9: 
      flat = 11.00; 
      break; 

     case 10: 
      flat = 10.40; 
      break; 

     case 11: 
      flat = 9.91; 
      break; 

     case 12: 
      flat = 9.50; 
      break; 

     case 13: 
      flat = 9.15; 
      break; 

     case 14: 
      flat = 8.86; 
      break; 

     case 15: 
      flat = 8.86; 
      break; 

     case 16: 
      flat = 8.38; 
      break; 

     case 17: 
      flat = 8.18; 
      break; 

     case 18: 
      flat = 8.00; 
      break; 

     case 19: 
      flat = 7.84; 
      break; 

     case 20: 
      flat = 7.70; 
      break; 

    } // switch 

    var flat_fee = flat * weight; 
    var mile_fee = distance * 0.90; 

    var shipping_fee = flat_fee + mile_fee; 
    simpleCart.shippingTest = shipping_fee; 
    return shipping_fee; 
} // shipping 

Je m en passant en 1 dès maintenant. La variable distance provient d'un appel ajax terminé avant l'exécution de cette fonction. Cette fonction ressemble à ceci:

function get_distance(zip) 
{ 

    $.getJSON(
     'distance.php', 
     { zip:zip }, 
     function(json) 
     { 
      distance = json 
     }) 

} // get_distance 

J'ai vérifié pour vous assurer est de définir la distance variable.

La console indique que l'erreur de type non interceptée se produit sur la ligne où j'appelle shipping(1). Des pensées quant à pourquoi cela se passe-t-il?

Répondre

23

Utilisez-vous shipping comme variable? On dirait que la livraison function est remplacée en l'utilisant comme variable avec une valeur numérique de 1.

Ce n'est pas dans le code que vous avez publié (l'appel à shipping(1) n'est pas non plus mentionné).

+0

C'était tout! Ugh erreurs stupides. Je vous remercie! – hookedonwinter

Questions connexes