Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] wycena
Forum PHP.pl > Forum > Przedszkole
kt
Nie mogę sobie poradzić z wyświetlaniem odpowiedniej wartości. Chciałbym uzyskać efekt taki że dla towaru 1,4,7 nie ma dodatkowych opłat, natomiast w pozostałych przypadkach doliczany jest dodatkowy koszt. Nie potrafię sobie również poradzić z uzyskaniem sumy poszczególnych komórek. Mogę prosić o pomoc questionmark.gif w jaki sposób osiągnąć pożądany efekt questionmark.gif

  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  2. <title>Dokument bez tytułu</title>
  3.  
  4. <script src="http://www.google.com/jsapi" type="text/javascript"></script>
  5. <script type="text/javascript">// <![CDATA[
  6. google.load("jquery", "1");
  7. // ]]></script>
  8. <script type="text/javascript">// <![CDATA[
  9. function update(){
  10. var sum = 0;
  11. $("#calculator > tbody > tr").each(function(){
  12.  
  13. var lp = parseFloat($(this).find("td:eq(0)").text());
  14.  
  15. var amount = parseFloat($(this).find("td").eq(3).find('input').val());
  16.  
  17. var value = $(this).find("td:eq(4)");
  18. var _value = parseFloat(value.text());
  19. var value2 = parseFloat($(this).find($("#pg")).text());
  20.  
  21. if (_value > 0 && (lp == 2 || lp == 3 || lp == 5 || lp == 6))
  22. {$("#pg").text(60);}
  23.  
  24. if (_value > 0 && (lp == 2 || lp == 3 || lp == 5 || lp == 6) && (lp == 1 || lp == 4 || lp == 7))
  25. {$("#pg").text(60);}
  26.  
  27. if (_value > 0 && lp != 1 && lp != 4 && lp != 7)
  28. {$("#pg").text(0);}
  29.  
  30.  
  31.  
  32.  
  33. var price = $(this).find("td:eq(2)");
  34.  
  35.  
  36. if (amount > 0 && amount < 501 && lp ==1) {
  37. price.text(0.37);
  38. } else
  39. if (amount > 500 && amount < 3001 && lp ==1) {
  40. price.text(0.32);
  41. } else
  42. if (amount > 3000 && amount < 6001 && lp ==1) {
  43. price.text(0.25);
  44. } else
  45. if (amount > 6000 && amount < 10001 && lp ==1) {
  46. price.text(0.21);
  47. } else
  48. if (amount > 10000 && lp ==1) {
  49. price.text(parseFloat(0.20).toFixed(2));
  50. } else
  51.  
  52. if (amount > 0 && amount < 501 && lp ==2) {
  53. price.text(parseFloat(0.50).toFixed(2));
  54. } else
  55. if (amount > 500 && amount < 3001 && lp ==2) {
  56. price.text(0.42);
  57. } else
  58. if (amount > 3000 && amount < 6001 && lp ==2) {
  59. price.text(0.32);
  60. } else
  61. if (amount > 6000 && amount < 10001 && lp ==2) {
  62. price.text(0.24);
  63. } else
  64. if (amount > 10000 && lp ==2) {
  65. price.text(0.23);
  66. } else
  67.  
  68. if (amount > 0 && amount < 501 && lp ==3) {
  69. price.text(0.54);
  70. } else
  71. if (amount > 500 && amount < 3001 && lp ==3) {
  72. price.text(0.46);
  73. } else
  74. if (amount > 3000 && amount < 6001 && lp ==3) {
  75. price.text(0.36);
  76. } else
  77. if (amount > 6000 && amount < 10001 && lp ==3) {
  78. price.text(0.29);
  79. } else
  80. if (amount > 10000 && lp ==3) {
  81. price.text(0.28);
  82. } else
  83.  
  84. if (amount > 0 && amount < 501 && lp ==4) {
  85. price.text(parseFloat(0.40).toFixed(2));
  86. } else
  87. if (amount > 500 && amount < 3001 && lp ==4) {
  88. price.text(0.35);
  89. } else
  90. if (amount > 3000 && amount < 6001 && lp ==4) {
  91. price.text(0.28);
  92. } else
  93. if (amount > 6000 && amount < 10001 && lp ==4) {
  94. price.text(0.24);
  95. } else
  96. if (amount > 10000 && lp ==4) {
  97. price.text(0.23);
  98. } else
  99.  
  100. if (amount > 0 && amount < 501 && lp ==5) {
  101. price.text(0.52);
  102. } else
  103. if (amount > 500 && amount < 3001 && lp ==5) {
  104. price.text(0.44);
  105. } else
  106. if (amount > 3000 && amount < 6001 && lp ==5) {
  107. price.text(0.34);
  108. } else
  109. if (amount > 6000 && amount < 10001 && lp ==5) {
  110. price.text(0.27);
  111. } else
  112. if (amount > 10000 && lp ==5) {
  113. price.text(0.26);
  114. } else
  115.  
  116. if (amount > 0 && amount < 501 && lp ==6) {
  117. price.text(0.56);
  118. } else
  119. if (amount > 500 && amount < 3001 && lp ==6) {
  120. price.text(0.48);
  121. } else
  122. if (amount > 3000 && amount < 6001 && lp ==6) {
  123. price.text(0.38);
  124. } else
  125. if (amount > 6000 && amount < 10001 && lp ==6) {
  126. price.text(0.31);
  127. } else
  128. if (amount > 10000 && lp ==6) {
  129. price.text(parseFloat(0.30).toFixed(2));
  130. } else
  131.  
  132. if (amount > 0 && amount < 501 && lp ==7) {
  133. price.text(0.34);
  134. } else
  135. if (amount > 500 && amount < 3001 && lp ==7) {
  136. price.text(0.28);
  137. } else
  138. if (amount > 3000 && amount < 6001 && lp ==7) {
  139. price.text(0.21);
  140. } else
  141. if (amount > 6000 && amount < 10001 && lp ==7) {
  142. price.text(0.18);
  143. } else
  144. if (amount > 10000 && lp ==7) {
  145. price.text(0.17);
  146. } else price.text(0)
  147.  
  148. var _price = parseFloat(price.text());
  149.  
  150. if (amount > 0 && amount !== undefined ) {
  151. value.text(parseFloat(_price*amount).toFixed(2));
  152. sum += _price*amount;
  153. } else {
  154. value.text(0);
  155. }
  156.  
  157. });
  158. $("#summary").text(parseFloat(sum).toFixed(2));
  159. $("#koszty").text(parseFloat(sum).toFixed(2));
  160. }
  161. $(document).ready(function(){
  162. update();
  163. $("#calculator input").keyup(function(){
  164. update();
  165. });
  166. });
  167.  
  168. function transport() {
  169. var th=document.getElementById('area').innerHTML;
  170. var transport=document.getElementById('transport').value;
  171. var new_text=''+transport+'';
  172. document.getElementById('area').innerHTML=new_text;
  173. }
  174.  
  175. function suma() {
  176. suma = (document.getElementById('summary').value-0)
  177. }
  178.  
  179. function suma1() {
  180. suma = (document.getElementById('summary').value-0) + (document.getElementById('pg').value-0) + (document.getElementById('area').value-0)}
  181.  
  182.  
  183. // ]]></script>
  184.  
  185. </head>
kt
http://jsfiddle.net/59wWC/
kt
nikt nie jest wstanie pomóc, naprowadzić questionmark.gif
Damonsson
Cytat
Chciałbym uzyskać efekt taki że dla towaru 1,4,7 nie ma dodatkowych opłat, natomiast w pozostałych przypadkach doliczany jest dodatkowy koszt.
http://jsfiddle.net/59wWC/2/

Cytat
Nie potrafię sobie również poradzić z uzyskaniem sumy poszczególnych komórek.
Nie rozumiem
kt
Dziękuję bardzo, Co do sumy to miałem na myśli: koszty razem = razem towar + dodatkowe koszty + koszt transportu
zrobiłem to tak ale to nie działa, w jaki sposób zsumować te komórki questionmark.gif

  1. function suma1() {
  2. suma = (document.getElementById('summary').value-0) + (document.getElementById('pg').value-0) + (document.getElementById('area').value-0)}
Damonsson
[JAVASCRIPT] pobierz, plaintext
  1. suma = (parseFloat($('#summary').text()) + parseFloat($('#pg').text()))
[JAVASCRIPT] pobierz, plaintext

itd.

Pomyśl nad używanie jQuery jak Ci tu podałem, znacznie ułatwia pisanie.
kt
nie wiem za bardzo jak przypisać wynik funkcji suma1 do wyświetlenia w komórce koszty

http://jsfiddle.net/59wWC/3/
Damonsson
http://jsfiddle.net/59wWC/6/

Nie rób miliona funkcji w funkcji, bo i tak nic z tego nie rozumiesz, a tak jeszcze bardziej mącisz, usunąłem Ci tamtą funkcję suma1 i po prostu wkleiłem

[JAVASCRIPT] pobierz, plaintext
  1. $('#koszty').text(parseFloat($('#summary').text()) + parseFloat($('#pg').text())+ parseFloat($('#area').text()));
[JAVASCRIPT] pobierz, plaintext


Musisz jeszcze sobie transport zrobić, bo nie działa, ale to już zabawa dla Ciebie, wszystkiego nie zrobię.
kt
Prawie wszystko działa, problem jeszcze jest w tym że jak ktoś wybierze 1 produkt potem wybierze transport to nie sumuje tego, sumuje w momencie wybierania kolejnego produktu. W jaki sposób sprawić żeby koszt transportu od razu dodawany do komórki Koszty razem. Nawet wtedy jak wybierze się sam koszt transportu to w komórce koszty razem będzie to już widoczne questionmark.gif

http://jsfiddle.net/59wWC/7/
Damonsson
Zrobiłem to tak na brzydko, nie powinno tak być, ale cały skrypt nie jest jakoś super poprawnie napisany, więc dla Ciebie myślę, najważniejsze żeby działał:

http://jsfiddle.net/59wWC/10/

Na końcu zmieniłem tylko, powtarzając to co masz wyżej:

[JAVASCRIPT] pobierz, plaintext
  1. document.getElementById('transport').onchange=function transport() {
  2. var transport=this.value;
  3. var new_text=transport;
  4. document.getElementById('area').innerHTML=new_text;
  5. $('#koszty').text((parseFloat($('#summary').text()) + parseFloat($('#pg').text())+ parseFloat($('#area').text())).toFixed(2));
  6. }
[JAVASCRIPT] pobierz, plaintext
kt
Wielkie dzięki za pomoc, masz rację najważniejsze że działa zgodnie z oczekiwaniami. Jeszcze raz dziękuję.
kt
Czy mogę jeszcze liczyć na pomoc questionmark.gif dodałem button do resetowana zawartości formularza. W jaki sposób wyczyścić pozostałe pola w tabeli questionmark.gif czyli kolumnę cana, oraz wartość w zł.

http://jsfiddle.net/59wWC/11/
Turson
Opakuj interesujące cię komórki w jakąś klasę, np. .cena i potem czyść wszystkie komórki po resecie
kt
dodałem klasy do komórek, jak sprawić żeby reset je wyczyścił questionmark.gif

http://jsfiddle.net/59wWC/12/
Turson
[JAVASCRIPT] pobierz, plaintext
  1. $('#configreset').click(function(){
  2. $('#11')[0].reset();
  3. $('.cena').text(0);
  4. });
[JAVASCRIPT] pobierz, plaintext
kt
dziękuję bardzo za pomoc
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.