2010-07-26 50 views
8

Bir form güncelleştiren bir onchange olayı var ve güncelleştirme işleminde nakliye hesaplamak için bir işlev çağırır. Neden emin değilim ama işlevi çağırmak çalıştığımda aşağıdaki hatayı alıyorum:Hataya neden "Hatalı TypeError: sayı bir işlev değil"

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 

Ben:

Uncaught TypeError: number is not a function

fonksiyonu, shipping, şöyle Şu anda 1'dan geçen m. distance değişkeni, bu işlev çalıştırılmadan önce tamamlanmış bir ajax çağrısından geliyor. Bu işlev aşağıdaki gibidir: Ben değişken distance ayarlandığından emin olmak için kontrol ettik

function get_distance(zip) 
{ 

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

} // get_distance 

.

Konsol, yakalanmamış türde hatanın'u aradığım satırdan nefret ettiğini söylüyor. Bunun neden olduğuna dair bir fikrin var mı?

cevap

23

shippingherhangi bir yerde değişken olarak mı kullanıyorsunuz? function gönderiminin, 1 sayısal değeriyle variable olarak kullanılarak üzerine yazılması gibi geliyor.

Gönderdiğiniz kodda yok (bahsettiğiniz shipping(1) numaralı telefona yapılan çağrı yok).

+0

Öyleydi! Aptal hatalar. Teşekkür ederim! – hookedonwinter

İlgili konular