Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP] Dodawanie liczb, jw
miras
post 10.10.2013, 19:37:40
Post #1





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


Witam, mam następujący kod (na prawdę jest inny, ale działa tak samo, przerobiłem go tylko po to, żeby Wam to zobrazować)

  1. <html>
  2. <head>
  3. <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  4.  
  5.  
  6. <script type="text/javascript">
  7. function pokaz(diw){
  8. $("#kupon").show();
  9. $("#"+diw).show();
  10. }
  11.  
  12. function schowaj(diw){
  13. $("#"+diw).hide();
  14. }
  15. </script>
  16. <style>
  17. #kupon {
  18. border: solid 1px #000;
  19. }
  20. </style>
  21. </head>
  22.  
  23. <body>
  24. <a onclick="pokaz('typ0');" href="#">Pokaz0</a>
  25. <a onclick="pokaz('typ1');" href="#">Pokaz1</a>
  26. <a onclick="pokaz('typ2');" href="#">Pokaz2</a>
  27. <a onclick="pokaz('typ3');" href="#">Pokaz3</a>
  28.  
  29. <?php
  30. for ($i=0; $i<7; $i++) {
  31. $typki=$typki.'<div style="display: none;" id="typ'.$i.'"><div class="text">Kurs: '.$i.'</div> <div class="usun"><a onclick="schowaj(\'typ'.$i.'\');" href="#">Usun</a></div></div>';
  32.  
  33. }
  34.  
  35.  
  36. echo '<div style="display: none;" id="kupon">'.$typki.'
  37.  
  38. <select name="kup">
  39. <option name="1">Pojedyńczy</option>
  40. <option name="2">Wielokrotny</option>
  41. </select>
  42. <div class="postaw"><a href="">Postaw Zakład</a></div>
  43. </div>';
  44. ?>
  45. </body>
  46. </html>


Moje pytanie brzmi: jak po wybraniu opcji z kuponu na "Wielokrotny" wyświetlić sumę "kursów" klikniętych (nie wszystkich, tylko tych, które zostały wyświetlone) dzięki z góry!

Ten post edytował miras 10.10.2013, 19:44:52


--------------------
Go to the top of the page
+Quote Post
_Borys_
post 11.10.2013, 00:21:07
Post #2





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


Potrzebne będą następujące selektory oraz funkcje jquery lub javascript w kolejności nieprzypadkowej:
:visible - zwraca tablicę ze wszystkimi elementami widocznymi
.each() - zwraca kolejno elementy pobrane przy pomocy :visible
.parseFloat() - zamienia kursy na liczbę zmiennoprzecinkową, rozumiem że kursy w formie xx.xx
.text() - pobiera tekst z diva z kursem
.match() - ewentualnie, jeśli w tekście oprócz kursu jest inny tekst, funkcja wyciąga dane ze stringa przy pomocy wyrażeń regularnych
Przykład:
[JAVASCRIPT] pobierz, plaintext
  1. if ($('select[name="kup"]').val() == 'Wielokrotny') {
  2. var kurs = 1;
  3. $('.text:visible').each(function () {
  4. kurs *= parseFloat($(this).text().match(/.*[\s:]?([\.\d]+)\s*$/)[1]);
  5. // lub jeśli tylko kurs w divie
  6. //kurs *= parseFloat($(this).text());
  7. });
  8. alert('Kurs całkowity : ' + kurs);
  9. }
  10. return false;
[JAVASCRIPT] pobierz, plaintext

Zastosowałem mnożenie zamiast dodawania bo chyba tak powinno być prawidłowo.

Ten post edytował _Borys_ 11.10.2013, 00:40:41
Go to the top of the page
+Quote Post
miras
post 14.10.2013, 14:59:01
Post #3





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


racja, powinno być mnożenie zamiast dodawania, mój błąd, natomiast nie bardzo wiem jak zastosować Twój kod do mojego skryptu ?


--------------------
Go to the top of the page
+Quote Post
_Borys_
post 14.10.2013, 15:47:39
Post #4





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


Wsadź to do jakieś funkcji i onclick na divie class="postaw". U mnie nie chciało działać z twoimi funkcjami, miałem wszystkie clicki w $(function(){}, wtedy działało ale być może jak zrobisz po swojemu tak jak wyzej podałem to zadziała.
Poprawka do regexa, zbyt zachłanny i ostatnią cyfrę tylko pobiera:
/.*?[\s:]?([\.\d]+)\s*$/
Tu masz po mojemu, ścieżkę do jquery zmień, możesz też zaokrąglać wynik jakąś funkcją zaokroglającą do dwóch miejsc po przecinku:
  1. <html>
  2. <head>
  3. <script src="../jQuery1_9_min.js" id="jquery"></script>
  4. <script type="text/javascript">
  5. $(function(){
  6.  
  7. $('.postaw a').click(function(){
  8. if($('select[name="kup"]').val() == 'Wielokrotny'){
  9. var kurs = 1.00;
  10. $('.text:visible').each(function(){
  11. kurs *= parseFloat($(this).text().match(/.*?[\s:]?([\.\d]+)\s*$/)[1]);
  12. });
  13. alert('Kurs całkowity : '+kurs);
  14. }
  15. return false;
  16. });
  17. $('.pokaz').click(function(){
  18. $("#kupon").show();
  19. var ind = $(this).index();
  20. $('#typ'+ind).show('slow');
  21. return false;
  22. });
  23. $('.usun').click(function(){
  24. $(this).parent().hide('slow');
  25. return false;
  26. });
  27. });
  28. </script>
  29. <style type="text/css">
  30. #kupon {
  31. border: solid 1px #000;
  32. display:none;
  33. }
  34. .box{
  35. display:none;
  36. }
  37. </style>
  38. </head>
  39. <body>
  40. <a href="#" class="pokaz">Pokaz1</a>
  41. <a href="#" class="pokaz">Pokaz2</a>
  42. <a href="#" class="pokaz">Pokaz3</a>
  43. <a href="#" class="pokaz">Pokaz4</a>
  44.  
  45. <div id="kupon">
  46.  
  47. <?php
  48.  
  49. for ($i=0; $i<4; $i++) {
  50. echo '<div class = "box" id="typ'.$i.'">
  51. <div class="text">Kurs: '.(1.23).'</div>
  52. <div class="usun"><a href="#">Usun</a></div>
  53. </div>';
  54. }
  55. ?>
  56. <select name="kup">
  57. <option name="1">Pojedyńczy</option>
  58. <option name="2">Wielokrotny</option>
  59. </select>
  60. <div class="postaw"><a href="">Postaw Zakład</a></div>
  61. </div>
  62. </body>
  63. </html>


Ten post edytował _Borys_ 14.10.2013, 15:58:45
Go to the top of the page
+Quote Post
miras
post 14.10.2013, 16:16:15
Post #5





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


nie no to nie zda egzaminu.. potrzebuję zrobić coś na tym onclick'u co byl pierwotnie.. bo to tylko część kodu wrzucilem na forum i miałbym za duzo zmian..

moze jest jakas opcja, zeby to zrobić w taki sposób, że po kliknięciu w kurs w onclick="funkcja(kurs)" podawac wlasnie tak aktualny kurs i jakos je zliczac?


--------------------
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: 25.04.2025 - 04:12