Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP] Dodawanie liczb
Forum PHP.pl > Forum > Przedszkole
miras
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!
_Borys_
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.
miras
racja, powinno być mnożenie zamiast dodawania, mój błąd, natomiast nie bardzo wiem jak zastosować Twój kod do mojego skryptu ?
_Borys_
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>
miras
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?
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.