Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z kalkulatorem
Forum PHP.pl > Forum > Po stronie przeglądarki
agataperz
Witam,

ma stworzony troszke wiekszy kalkulator:
  1. <script type="text/javascript">
  2.  
  3.  
  4. function number_format (number, decimals, dec_point, thousands_sep) {
  5. number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
  6. var n = !isFinite(+number) ? 0 : +number,
  7. prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
  8. sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
  9. dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
  10. s = '',
  11. toFixedFix = function (n, prec) {
  12. var k = Math.pow(10, prec);
  13. return '' + Math.round(n * k) / k;
  14. };
  15. // Fix for IE parseFloat(0.55).toFixed(0) = 0;
  16. s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
  17. if (s[0].length > 3) {
  18. s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
  19. }
  20. if ((s[1] || '').length < prec) {
  21. s[1] = s[1] || '';
  22. s[1] += new Array(prec - s[1].length + 1).join('0');
  23. }
  24. return s.join(dec);
  25. }
  26.  
  27. function float_val(v) {
  28. v = parseFloat(String(v).replace(',', '.'))
  29. return isNaN(v) ? 0 : v
  30. }
  31.  
  32. function zlicz(e) {
  33. var f=document.forms[0]
  34. f.kasaasuma.value = float_val(f.kasaa200.value) * 200 + float_val(f.kasaa001.value) *0.01 + float_val(f.kasaa002.value) *0.02 + float_val(f.kasaa005.value) *0.05 + float_val(f.kasaa010.value) *0.1 + float_val(f.kasaa020.value) * 0.2 + float_val(f.kasaa050.value) * 0.5 + float_val(f.kasaa1.value) *1 + float_val(f.kasaa2.value) *2 + float_val(f.kasaa5.value) *5 + float_val(f.kasaa10.value) *10 + float_val(f.kasaa20.value) *20 + float_val(f.kasaa50.value) *50 + float_val(f.kasaa100.value) *100
  35. f.kasaasuma200.value = float_val(f.kasaa200.value) * 200
  36. f.kasaasuma100.value = float_val(f.kasaa100.value) * 100
  37. f.kasaasuma50.value = float_val(f.kasaa50.value) * 50
  38. f.kasaasuma20.value = float_val(f.kasaa20.value) * 20
  39. f.kasaasuma10.value = float_val(f.kasaa10.value) * 10
  40. f.kasaasuma5.value = float_val(f.kasaa5.value) * 5
  41. f.kasaasuma2.value = float_val(f.kasaa2.value) * 2
  42. f.kasaasuma1.value = float_val(f.kasaa1.value) * 1
  43. f.kasaasuma050.value = float_val(f.kasaa050.value) * 0.5
  44. f.kasaasuma020.value = float_val(f.kasaa020.value) * 0.2
  45. f.kasaasuma010.value = float_val(f.kasaa010.value) * 0.1
  46. f.kasaasuma005.value = float_val(f.kasaa005.value) * 0.05
  47. f.kasaasuma002.value = float_val(f.kasaa002.value) * 0.02
  48. f.kasaasuma001.value = float_val(f.kasaa001.value) * 0.01
  49. f.kasabsuma.value = float_val(f.kasab200.value) * 200 + float_val(f.kasab001.value) *0.01 + float_val(f.kasab002.value) *0.02 + float_val(f.kasab005.value) *0.05 + float_val(f.kasab010.value) *0.1 + float_val(f.kasab020.value) * 0.2 + float_val(f.kasab050.value) * 0.5 + float_val(f.kasab1.value) *1 + float_val(f.kasab2.value) *2 + float_val(f.kasab5.value) *5 + float_val(f.kasab10.value) *10 + float_val(f.kasab20.value) *20 + float_val(f.kasab50.value) *50 + float_val(f.kasab100.value) *100
  50. f.kasabsuma200.value = float_val(f.kasab200.value) * 200
  51. f.kasabsuma100.value = float_val(f.kasab100.value) * 100
  52. f.kasabsuma50.value = float_val(f.kasab50.value) * 50
  53. f.kasabsuma20.value = float_val(f.kasab20.value) * 20
  54. f.kasabsuma10.value = float_val(f.kasab10.value) * 10
  55. f.kasabsuma5.value = float_val(f.kasab5.value) * 5
  56. f.kasabsuma2.value = float_val(f.kasab2.value) * 2
  57. f.kasabsuma1.value = float_val(f.kasab1.value) * 1
  58. f.kasabsuma050.value = float_val(f.kasab050.value) * 0.5
  59. f.kasabsuma020.value = float_val(f.kasab020.value) * 0.2
  60. f.kasabsuma010.value = float_val(f.kasab010.value) * 0.1
  61. f.kasabsuma005.value = float_val(f.kasab005.value) * 0.05
  62. f.kasabsuma002.value = float_val(f.kasab002.value) * 0.02
  63. f.kasabsuma001.value = float_val(f.kasab001.value) * 0.01
  64.  
  65.  
  66.  
  67. var aaa = float_val(f.kasaasuma.value)
  68. f.kasaa.value = number_format(aaa, 2, ',', ' ');
  69.  
  70. var bbb = float_val(f.kasabsuma.value)
  71. f.kasab.value = number_format(bbb, 2, ',', ' ');
  72.  
  73.  
  74.  
  75. var a=float_val(f.utargkasa.value) - float_val(f.utargwu.value)+float_val(f.utargria.value)+float_val(f.utargloo.value)+float_val(f.utargwuwplata.value)+float_val(f.utarglvm.value) - float_val(f.platnosckarta.value) - float_val(f.platnoscpayback.value) + float_val(f.poczatek.value)
  76. f.koniec.value = number_format(a, 2, ',', ' ');
  77. f.konieckoniec.value = number_format(a, 2, '.', '');
  78.  
  79. var b=float_val(f.poczatek.value) + float_val(f.utargkasa.value) - float_val(f.utargwu.value) - float_val(f.platnosckarta.value) - float_val(f.platnoscpayback.value)
  80. f.koniecdnia.value = number_format(b, 2, '.', '');
  81.  
  82.  
  83. var fff = (float_val(f.kasaa.value) + float_val(f.kasab.value))-(b+float_val(f.utargria.value)+float_val(f.utargloo.value)+float_val(f.utarglvm.value)+float_val(f.utargwuwplata.value));
  84. f.wkasie.value = number_format(fff, 2, ',', ' ');
  85. f.stankasy.value = number_format(fff, 2, '.', '');
  86.  
  87. } </script>


Niestety jezeli jakiekolwiek zmiennej np. f.kasabsuma200.value ... f.kasabsuma001.value będą posiadały wartość powyżej 1 000 to do zmiennej nie sa doliczane 3 ostatnie pozycje. Tak jakby powodem byl separator tysiecznych. Niestety w tym skrypcie nie mogę znaleźć prowodyra tej akcji. Czy mogłaby prosić Was o pomoc?
trueblue
Do której zmiennej nie są doliczane 3 ostatnie pozycje?
agataperz
f.wkasie.value

  1. var fff = (float_val(f.kasaasuma.value) + float_val(f.kasabsuma.value))-(b+float_val(f.utargria.value)+float_val(f.utargloo.value)+float_val(f.utarglvm.value)+float_val(f.utargwuwplata.value));


zamiana tez nie dala
trueblue
Najpierw proponuję Ci linie 34 oraz 49 przenieść za te dwa bloki mnożeń. Tj. najpierw przemnożyć wszystkie zmienne, potem obliczyć ich sumę.
A kiedy uporządkujesz sprawdź kroku po kroku jaką wartość ma każda zmienna wchodząca w skład sumy.
agataperz
dzieki za porade - w tym balaganie nie dziwie sie ze to tak liczylo smile.gif

  1. function zlicz(e) {
  2. var f=document.forms[0]
  3. f.kasaasuma200.value = float_val(f.kasaa200.value) * 200
  4. f.kasaasuma100.value = float_val(f.kasaa100.value) * 100
  5. f.kasaasuma50.value = float_val(f.kasaa50.value) * 50
  6. f.kasaasuma20.value = float_val(f.kasaa20.value) * 20
  7. f.kasaasuma10.value = float_val(f.kasaa10.value) * 10
  8. f.kasaasuma5.value = float_val(f.kasaa5.value) * 5
  9. f.kasaasuma2.value = float_val(f.kasaa2.value) * 2
  10. f.kasaasuma1.value = float_val(f.kasaa1.value) * 1
  11. f.kasaasuma050.value = float_val(f.kasaa050.value) * 0.5
  12. f.kasaasuma020.value = float_val(f.kasaa020.value) * 0.2
  13. f.kasaasuma010.value = float_val(f.kasaa010.value) * 0.1
  14. f.kasaasuma005.value = float_val(f.kasaa005.value) * 0.05
  15. f.kasaasuma002.value = float_val(f.kasaa002.value) * 0.02
  16. f.kasaasuma001.value = float_val(f.kasaa001.value) * 0.01
  17. f.kasabsuma200.value = float_val(f.kasab200.value) * 200
  18. f.kasabsuma100.value = float_val(f.kasab100.value) * 100
  19. f.kasabsuma50.value = float_val(f.kasab50.value) * 50
  20. f.kasabsuma20.value = float_val(f.kasab20.value) * 20
  21. f.kasabsuma10.value = float_val(f.kasab10.value) * 10
  22. f.kasabsuma5.value = float_val(f.kasab5.value) * 5
  23. f.kasabsuma2.value = float_val(f.kasab2.value) * 2
  24. f.kasabsuma1.value = float_val(f.kasab1.value) * 1
  25. f.kasabsuma050.value = float_val(f.kasab050.value) * 0.5
  26. f.kasabsuma020.value = float_val(f.kasab020.value) * 0.2
  27. f.kasabsuma010.value = float_val(f.kasab010.value) * 0.1
  28. f.kasabsuma005.value = float_val(f.kasab005.value) * 0.05
  29. f.kasabsuma002.value = float_val(f.kasab002.value) * 0.02
  30. f.kasabsuma001.value = float_val(f.kasab001.value) * 0.01
  31.  
  32. var xaa = float_val(f.kasab200.value) * 200 + float_val(f.kasab001.value) *0.01 + float_val(f.kasab002.value) *0.02 + float_val(f.kasab005.value) *0.05 + float_val(f.kasab010.value) *0.1 + float_val(f.kasab020.value) * 0.2 + float_val(f.kasab050.value) * 0.5 + float_val(f.kasab1.value) *1 + float_val(f.kasab2.value) *2 + float_val(f.kasab5.value) *5 + float_val(f.kasab10.value) *10 + float_val(f.kasab20.value) *20 + float_val(f.kasab50.value) *50 + float_val(f.kasab100.value) *100
  33. f.kasab.value = number_format(xaa, 2, ',', ' ');
  34. var xbb = float_val(f.kasaa200.value) * 200 + float_val(f.kasaa001.value) *0.01 + float_val(f.kasaa002.value) *0.02 + float_val(f.kasaa005.value) *0.05 + float_val(f.kasaa010.value) *0.1 + float_val(f.kasaa020.value) * 0.2 + float_val(f.kasaa050.value) * 0.5 + float_val(f.kasaa1.value) *1 + float_val(f.kasaa2.value) *2 + float_val(f.kasaa5.value) *5 + float_val(f.kasaa10.value) *10 + float_val(f.kasaa20.value) *20 + float_val(f.kasaa50.value) *50 + float_val(f.kasaa100.value) *100
  35. f.kasaa.value = number_format(xbb, 2, ',', ' ');
  36.  
  37. var xcc=float_val(f.utargkasa.value) - float_val(f.utargwu.value) - float_val(f.platnosckarta.value) - float_val(f.platnoscpayback.value) + float_val(f.poczatek.value)
  38. var haha.gifd = 5 + (xcc.toFixed(2).slice(-5));
  39. f.koniec.value = number_format(xdd, 2, ',', ' ');
  40. f.konieckoniec.value = number_format(xdd, 2, '.', '');
  41.  
  42. var xee=float_val(f.poczatek.value) + float_val(f.utargkasa.value) - float_val(f.utargwu.value) - float_val(f.platnosckarta.value) - float_val(f.platnoscpayback.value)
  43. var xff = parseFloat(xee.toFixed(2).slice(-5));
  44. var xgg=xee-xff-500;
  45. f.wplata.value = number_format(xgg, 2, ',', ' ');
  46. f.koniecdnia.value = number_format(xgg, 2, '.', '');
  47.  
  48.  
  49. var xhh =(xaa+xbb)-haha.gifd;
  50. f.wkasie.value = number_format(xhh, 2, ',', ' ');
  51. f.stankasy.value = number_format(xhh, 2, '.', '');
  52.  
  53. var ggg = ((float_val(f.bank200.value)*200) + (float_val(f.bank100.value)*100)+ (float_val(f.bank50.value)*50)+ (float_val(f.bank20.value)*20)+ (float_val(f.bank10.value)*10)+ (float_val(f.bank5.value)*5)+ (float_val(f.bank2.value)*2)+ (float_val(f.bank1.value)*1)+ (float_val(f.bank050.value)*0.5)+ (float_val(f.bank020.value)*0.2)+ (float_val(f.bank010.value)*0.1)+ (float_val(f.bank005.value)*0.05)+ (float_val(f.bank002.value)*0.02)+ (float_val(f.bank001.value)*0.01))-(xgg+float_val(f.utargloo.value)+ float_val(f.utarglvm.value)+ float_val(f.utargria.value)+ float_val(f.utargwuwplata.value));
  54. f.transfer.value = number_format(ggg, 2, ',', ' ');
  55. f.bankwire.value = number_format(ggg, 2, '.', '');
  56.  


i teraz dziala. Dziekuje
trueblue
Nie do końca o to mi chodziło, choć dzięki temu działa dobrze.

Zamiast
  1. var xaa = float_val(f.kasab200.value) * 200 + itd

możesz wykonać:
  1. var xaa = f.kasabsuma200.value + itd


P.S. Czy na pewno dobre zmienne podstawiasz do sum? W xaa nie powinno byś kasaaXXX?
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.