Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] prosta funkcja zwraca NaN
Forum PHP.pl > Forum > Przedszkole
miras
Witam, mam kod:


  1. <script type="text/javascript">
  2. function oblicz() {
  3. var koszt;
  4. saf = document.forms['safetax'];
  5.  
  6. if (saf.ksiegowosc.value==1) {
  7. if (saf.ewidencja.value==1) {
  8. if (saf.faktury.value==1) {
  9. koszt = koszt + 80;
  10. } else if (saf.ewidencja.value==2) {
  11. koszt = koszt + 99;
  12. } else if (saf.ewidencja.value==3) {
  13. koszt = koszt + 149;
  14. } else if (saf.ewidencja.value==4) {
  15. koszt = koszt + 199;
  16. } else if (saf.ewidencja.value==5) {
  17. koszt = koszt + 249;
  18. }
  19.  
  20. } else if (saf.ewidencja.value==2) {
  21. if (saf.faktury.value==1) {
  22. koszt = koszt + 80;
  23. } else if (saf.ewidencja.value==2) {
  24. koszt = koszt + 90;
  25. } else if (saf.ewidencja.value==3) {
  26. koszt = koszt + 135;
  27. } else if (saf.ewidencja.value==4) {
  28. koszt = koszt + 180;
  29. } else if (saf.ewidencja.value==5) {
  30. koszt = koszt + 225;
  31. }
  32.  
  33. } else if (saf.ewidencja.value==3) {
  34. if (saf.faktury.value==1) {
  35. koszt = koszt + 500;
  36. } else if (saf.ewidencja.value==2) {
  37. koszt = koszt + 500;
  38. } else if (saf.ewidencja.value==3) {
  39. koszt = koszt + 500;
  40. } else if (saf.ewidencja.value==4) {
  41. koszt = koszt + 800;
  42. } else if (saf.ewidencja.value==5) {
  43. koszt = koszt + 950;
  44. }
  45. }
  46.  
  47.  
  48.  
  49. }
  50. koszt = koszt + (saf.pracownicy.value*35);
  51. document.getElementsByClassName('cena')[0].innerHTML=koszt;
  52. }
  53. </script>



po poprawnym wypełnieniu formularza i wywołaniu funkcji oblicz() zmienna koszt = NaN..

Dzięki z góry!
Micchaleq
Jak dla mnie to w którymś miejscu musisz dodawać przez przypadek stringa. I tego bym szukał postprawdzaj sobie jakiego typu są zmienne i powinno pomóc.
miras
Problem w tym, że wszystko jest sumowane w ten sposób:

koszt = koszt + 80;

a jedyna operacja, która mogła by być błędem (według tego, co napisałeś) to to:

  1. koszt = koszt + (saf.pracownicy.value*35);


ale pole jest typu number <input type="number"> poza tym, próbowałem zakomentować tą linijkę i bez zmian.
datumplane
Koszt jest undefined, więc po dodaniu czegokolwiek dostaniesz właśnie NaN. Zainicjalizuj zmienną.
maviozo
Taka podpowiedź, zamiast:
Kod
    if (saf.faktury.value==1) {
koszt = koszt + 80;
} else if (saf.ewidencja.value==2) {
koszt = koszt + 90;
} else if (saf.ewidencja.value==3) {
koszt = koszt + 135;
} else if (saf.ewidencja.value==4) {
koszt = koszt + 180;
} else if (saf.ewidencja.value==5) {
koszt = koszt + 225;
}

wolę robić np. w ten sposób:
Kod
dodaj_koszt=[0,80,90,135,180,225];
if (saf.ewidencja.value>0&&saf.ewidencja.value<6)
koszt+=dodaj_koszt[saf.ewidencja.value];
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.