Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Zaokrąglenie do 2 miejsca po przecinku
kondziu9516
post 25.02.2012, 20:18:09
Post #1





Grupa: Zarejestrowani
Postów: 142
Pomógł: 1
Dołączył: 9.08.2011
Skąd: Bielsko Biała

Ostrzeżenie: (20%)
X----


Witam mam problem z zaokrągleniem liczby do 2 miejsc po przecinku.
Sumowanie jest w JS.

  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  2. <title>Kalkulator</title>
  3. </head>
  4. <script src="kalkulator.js"></script>
  5. function Suma(){
  6.  
  7. var suma=0;
  8. $('input:checkbox[@name^=id]',document.forms[0]).each(function(){
  9. if(this.checked)suma+=+$(this).attr('value');
  10. });
  11. $('#xyz').empty().append(suma);
  12. }
  13. <input type="checkbox" name="id1" value="12.89" />Produkt 1<br>
  14. <font size="2">Cena: 12.89 PLN:</font><br><br>
  15. <input type="checkbox" name="id2" value="15.90" />Produkt 2<br>
  16. <font size="2">Cena: 15.90 PLN:</font><br><br>
  17. <input type="checkbox" name="id3" value="120.78" />Produkt 3<br>
  18. <font size="2">Cena: 120.78 PLN:</font><br><br>
  19. <input type="checkbox" name="id3" value="20.78" />Produkt 4<br>
  20. <font size="2">Cena: 20.78 PLN:</font><br><br>
  21. <input type="button" onclick="Suma()" value="Podlicz" />
  22. </form>
  23. <b>SUMA:</b> <span id="xyz">0</span> PLN
  24. </body>
  25. </html>


Sumując Produkt 1 i Produkt 3
Wyskakuje suma: 133.67000000000002

Jak zaokrąglić to do dwóch miejsc?
Proszę o pomoc
Go to the top of the page
+Quote Post
Barcelona
post 25.02.2012, 20:20:33
Post #2





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


Trzymej smile.gif http://www.yarpo.pl/2011/03/06/js-zaokragl...a-dokladnoscia/
Go to the top of the page
+Quote Post
kondziu9516
post 25.02.2012, 20:24:14
Post #3





Grupa: Zarejestrowani
Postów: 142
Pomógł: 1
Dołączył: 9.08.2011
Skąd: Bielsko Biała

Ostrzeżenie: (20%)
X----


Widziałem to już...
Ale nie wiem jak to odwołać się do tego?

Gdzie wkleić dany fragment?
Go to the top of the page
+Quote Post
by_ikar
post 25.02.2012, 20:25:20
Post #4





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


A tam kombinacje alpejskie jakieś.. toFixed i wszystko jasne wink.gif
Go to the top of the page
+Quote Post
kondziu9516
post 25.02.2012, 20:26:58
Post #5





Grupa: Zarejestrowani
Postów: 142
Pomógł: 1
Dołączył: 9.08.2011
Skąd: Bielsko Biała

Ostrzeżenie: (20%)
X----


wiem dzięki wielkie....
znalazłem to wcześniej.
Ale gdzie to tutaj dokładnie wstawić?
BO próbowałem wielokrotnie...

  1. function Suma(){
  2.  
  3. var suma=0;
  4. $('input:checkbox[@name^=id]',document.forms[0]).each(function(){
  5. if(this.checked)suma+=+$(this).attr('value');
  6. });
  7. $('#xyz').empty().append(suma);
  8. }
  9. function Round(n, k)
  10. {
  11. var factor = Math.pow(10, k);
  12. return Math.round(n*factor)/factor;
  13. }
Go to the top of the page
+Quote Post
Kostek.88
post 25.02.2012, 20:39:28
Post #6





Grupa: Zarejestrowani
Postów: 376
Pomógł: 47
Dołączył: 23.08.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  1.  
  2. var liczba = 3,4563482
  3.  
  4. var liczbaZaokraglona = liczba.toFixed(2); // to jest do dwóch
  5.  


EDIT: w Twoim przykładzie to chyba musisz 8. linijkę zamienić na
  1. $('#xyz').text(suma.toFixed(2));


albo

  1. $('#xyz').html(suma.toFixed(2));


Niepotrzebny Ci empty i append smile.gif Funkcja Round też nie, z tego co widzę.

Ten post edytował Kostek.88 25.02.2012, 20:42:37
Go to the top of the page
+Quote Post
kondziu9516
post 25.02.2012, 20:43:47
Post #7





Grupa: Zarejestrowani
Postów: 142
Pomógł: 1
Dołączył: 9.08.2011
Skąd: Bielsko Biała

Ostrzeżenie: (20%)
X----


niestety nie działa...;(

A czy przerobiłby mi ktoś ten kod na poprawny??

  1. function Suma(){
  2.  
  3. var suma=0;
  4. $('input:checkbox[@name^=id]',document.forms[0]).each(function(){
  5. if(this.checked)suma+=+$(this).attr('value');
  6. });
  7. $('#xyz').empty().append(suma);
  8. }
  9.  


Edit:
Oczywiście daje plusy !

Ten post edytował kondziu9516 25.02.2012, 20:44:07
Go to the top of the page
+Quote Post
Kostek.88
post 25.02.2012, 21:12:11
Post #8





Grupa: Zarejestrowani
Postów: 376
Pomógł: 47
Dołączył: 23.08.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Jak już robisz to w jQuery, to po co mieszać z natywnym JS? Zobacz tutaj: http://jsfiddle.net/kostek/hRDpR/ . Musisz sparsować każdą wartość funckją parseFloat (dla liczb ułamkowych) lub np. parseInt (dla całkowitych), a potem dopiero wykonywać na nich operacje. A dlaczego? Bo JS interpretuje Twoje wartości jako string i łączy je jak zwykłe fragmenty tekstu.

Ten post edytował Kostek.88 25.02.2012, 21:12:59
Go to the top of the page
+Quote Post
kondziu9516
post 25.02.2012, 21:18:51
Post #9





Grupa: Zarejestrowani
Postów: 142
Pomógł: 1
Dołączył: 9.08.2011
Skąd: Bielsko Biała

Ostrzeżenie: (20%)
X----


albo coś źle wstawiam... albo nie działa...;(

Go to the top of the page
+Quote Post
Kostek.88
post 25.02.2012, 21:27:12
Post #10





Grupa: Zarejestrowani
Postów: 376
Pomógł: 47
Dołączył: 23.08.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Ha ha ha! Działa smile.gif Sam widzisz pod linkiem. A tak zapytam... a gdzie masz jQuery?questionmark.gif http://docs.jquery.com/Downloading_jQuery - ściągnij i daj do HEAD
Go to the top of the page
+Quote Post
kondziu9516
post 25.02.2012, 21:35:30
Post #11





Grupa: Zarejestrowani
Postów: 142
Pomógł: 1
Dołączył: 9.08.2011
Skąd: Bielsko Biała

Ostrzeżenie: (20%)
X----


No mam wszystko...
Tak to mam... i nie działa nawet teraz podliczanie...;/

  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  2. <title>Kalkulator</title>
  3. <script type='text/javascript' src='kalkulator1.js'></script>
  4. <script type='text/javascript' src="kalkulator.js"></script>
  5. <script type='text/javascript'>
  6. $('input.suma').click(function(){
  7. var suma = 0;
  8. $('form input[type=checkbox]:checked').each(function(){
  9. suma += parseFloat($(this).val());
  10. });
  11. $('#xyz').html(parseFloat(suma).toFixed(2));
  12.  
  13. });
  14. </head>
  15. <form>
  16. <input type="checkbox" name="id1" value="12.89" />Produkt 1<br>
  17. <font size="2">Cena: 12.89 PLN:</font><br><br>
  18. <input type="checkbox" name="id2" value="15.90" />Produkt 2<br>
  19. <font size="2">Cena: 15.90 PLN:</font><br><br>
  20. <input type="checkbox" name="id3" value="120.78" />Produkt 3<br>
  21. <font size="2">Cena: 120.78 PLN:</font><br><br>
  22. <input type="checkbox" name="id4" value="20.78" />Produkt 4<br>
  23. <font size="2">Cena: 20.78 PLN:</font><br><br>
  24. <input type="button" class="suma" value="Podlicz" />
  25. </form>
  26. <b>SUMA:</b> <span id="xyz">0.00</span> PLN
  27.  
  28. </body>
  29. </html>


Ten post edytował kondziu9516 25.02.2012, 21:36:58
Go to the top of the page
+Quote Post
Kostek.88
post 25.02.2012, 21:56:40
Post #12





Grupa: Zarejestrowani
Postów: 376
Pomógł: 47
Dołączył: 23.08.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


EDIT: a gdzie masz jQuery w tym przykładzie?! Podałem Ci link do biblioteki do wstawienia... przeczytałeś tego posta chociaż? Widzę, kalkulator wstawiasz, a jQuery nie... nie rozumiem... chyba nie czytałeś...

Tutaj masz wersję natywnego JavaScript. Jeśli nie masz zamiaru używać jQuery, to zrób to natywnie... jeśli masz mało JS na stronie, nie ma sensu byś umieszczał ciężką bibliotekę jQuery...

  1. function sumuj() {
  2. var suma = 0;
  3. var c = document.getElementById('formularz').getElementsByTagName('input');
  4. for (var i = 0; i < c.length; i++) {
  5. if (c[i].type == 'checkbox') {
  6. if ( c[i].checked == true ) {
  7. suma += parseFloat( c[i].value );
  8. }
  9. }
  10. }
  11.  
  12. document.getElementById("xyz").innerHTML = parseFloat(suma).toFixed(2);
  13. }


Ten post edytował Kostek.88 25.02.2012, 21:59:40
Go to the top of the page
+Quote Post
kondziu9516
post 25.02.2012, 22:39:17
Post #13





Grupa: Zarejestrowani
Postów: 142
Pomógł: 1
Dołączył: 9.08.2011
Skąd: Bielsko Biała

Ostrzeżenie: (20%)
X----


Okej już działa...wink.gif
Zrobiłem to jeszcze inaczej...biggrin.gif
Ze źródła strony skopiowałem...
I brakowało tylko tego $(window).load(function(){
w tym...tongue.gif
  1. <script type='text/javascript'>
  2. //<![CDATA[
  3. $(window).load(function(){
  4. $('input.suma').click(function(){
  5. var suma = 0;
  6. $('form input[type=checkbox]:checked').each(function(){
  7. suma += parseFloat($(this).val());
  8. });
  9. $('#xyz').html(parseFloat(suma).toFixed(2));
  10. });
  11.  
  12. });//]]>
  13.  



Ten post edytował kondziu9516 25.02.2012, 22:45:58
Go to the top of the page
+Quote Post
--Mario--
post 26.02.2012, 01:06:11
Post #14





Goście







A to jest forum php czy JS
Go to the top of the page
+Quote Post
Kostek.88
post 26.02.2012, 23:53:23
Post #15





Grupa: Zarejestrowani
Postów: 376
Pomógł: 47
Dołączył: 23.08.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


@kondziu9516: Możesz dać ew.

  1. $(document).ready(function(){
  2. // kod jQuery
  3. });


Poza tym nadal nie widzę tego jQuery w HEAD tongue.gif Mimo wszystko dobrze, że działa.

@Mario: Jak poprzeglądasz działy forum to zorientujesz się, że to nie tylko PHP. W dużej mierze tak, ale nie ukrywajmy, pewne elementy są ze sobą na tyle powiązane, że uważam za dobry pomysł działy nie o PHP. Ba, masz nawet HydePark.

PS. No chyba, że Ci o dział chodziło...
Go to the top of the page
+Quote Post
kosiew
post 10.05.2012, 17:33:03
Post #16





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 10.05.2012

Ostrzeżenie: (0%)
-----


Witam. Czy ktoś przerobił by ten kodzik tak aby w polu "wynik" pojawiła się liczba zaokrąglona do 2 miejsc po przecinku?? Wiem ze trzeba wykorzystać tą funkcje


  1. function zaokraglenie(liczba) {
  2. liczba = liczba * 100;
  3. var wynik = Math.round(liczba)/100;
  4. window.alert(wynik);
  5. }


ale nie mam pojęcia jak ja scalić z kodem i wywołać.

  1. function a() {
  2. p = 7;
  3. //pobiera wartość z input-a o id="p1"
  4. p1 = document.getElementById("p1").value;
  5. //oblicza wynik
  6. wynik = p1 / p;
  7. //zapisuje wynik w input o id="wynik"
  8. document.getElementById("wynik").value = wynik;
  9. }
  10. </script>
  11.  
  12. <from>
  13. <input type="text" name="pole" id="p1"/>
  14.  
  15. <input type="text" name="7" value="7"/>
  16.  
  17. <input type="text" id="wynik"/>
  18.  
  19. <input type="button" value="Oblicz" onclick="a()"/>
  20. </from>




Go to the top of the page
+Quote Post
Kostek.88
post 16.05.2012, 22:29:51
Post #17





Grupa: Zarejestrowani
Postów: 376
Pomógł: 47
Dołączył: 23.08.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


[JAVASCRIPT] pobierz, plaintext
  1. document.getElementById("wynik").value = parseFloat(wynik).toFixed(2);
[JAVASCRIPT] pobierz, plaintext


A jeśli chcesz bardzo użyć tej funkcji powyżej, to usuń ten cały alert. Powinno być return, jak w każdej normalnej funkcji.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 1.05.2025 - 05:30