IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Tomáš Michálek:28.9.2022 20:32

Zdravím , som v JS úplný začiatočník, a snažím sa vytvoriť kalkulačku na výpočet "cenovej ponuky" .
Lenže nejako mi to nefunguje , vie mi niekto s tým poradiť ?

(function ($) {
    $(function () {

          calculate();

          jQuery('#calculator input').keyup(function() {
              this.value = this.value.replace(/[^0-9\.,]/g, '');
              this.value = this.value.replace(/[,]/, '.');
          });
          jQuery('#calculator input, #calculator select').change(function() {
              calculate();
          });
          jQuery('#calculator input').keyup(function() {
              calculate();
          });
          function calculate() {
        $('.calculator').each(function(key, val){
          calcInputs = {};
              $(this).find('input, select').each(function(key, val){
                  name = $(this).attr('name');
                  val = $(this).val();
                  if (!$.isNumeric(val)) {
                      switch (name) {
                          case 'area':
                              val = '1';
                              break;
                          case 'texture':
                              val = '0';
                              break;
                          case 'texture2':
                              val = '';
                              break;
                          case 'tube':
                              val = '';
                              break;
                          case 'chandelier-hook':
                              val = '';
                              break;
                          default:
                              break;
                      }
                      $(this).val(val);
                  }
                  calcInputs[name] = val;
              });

              total = 0;

              switch (calcInputs.texture) {
                  case 'mat':
              total += calcInputs.area * 113;
              break;
                  case 'glossy':
              total += calcInputs.area * 180;
              break;
                  case 'satin':
              total += calcInputs.area * 180;
              break;
                  case 'fabric':
              total += calcInputs.area + 0;
              break;
              default:
              break;
              }



              total = 0;
              switch (calcInputs.texture2) {
                case 'mat2':
            total += calcInputs.corners * 113;
            break;
                case 'glossy2':
            total += calcInputs.corners * 180;
            break;
                case 'satin2':
            total += calcInputs.corners * 180;
            break;
                case 'fabric2':
            total += calcInputs.area + 0;
            break;
            default:
            break;
            }







              if (calcInputs['chandelier-hook'] >= 1) {
                  total += calcInputs['chandelier-hook'] * 500;
              }

              if (calcInputs.lamp >= 1) {
                  total += calcInputs.lamp * 350;
              }

              if (calcInputs.tube >= 1) {
                  total += calcInputs.tube * 300;
              }

          install = calcInputs.area * 170;
          total += install;

              total += ' €.';
              jQuery(this).find('span.total').html(total);
        });
          }

      });
  })(jQuery);
  ;

Zkusil jsem:

Chci docílit: Má to vyzerať približne takto :
Celková plocha : ____m3
Využitie dlažby: tu sú možnosti a/b/c
Osadenie obrubníkov: _____m
Typ obrubníkov: znova možnosti a/b/c (každá možnosť má vopred určenú cenu)
atď....
Celková plocha sa vynásobí položkou " využitie dlažby" + Osadenie obrubníkov sa vynásobí "typ obrubníka" + ...... celková suma

 
Odpovědět
28.9.2022 20:32
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:29.9.2022 8:51

V cem je problem? A proc to delas tak slozite? To vypada jako kod z neceho poslepovany.
No, a, co ti to dela nebo nedela? A proc jsi k tomu nedodalzjednoduseny html kod? Takhle je nam to v celku k nicemu. Js, ktery nemas na cem vyzkouset, ze?

Javascript se ladi pres js konzoli. Postupne si vypisujes radek po radku a zjistis, kde je to jeste dobre a kde uz nee. Zkopirovat nejaky kod a poslepovat to s necim dalsim, kdyz si neotestujes, ze ti kazda cast funguje ti jen zkomplikuje zivot.

 
Nahoru Odpovědět
29.9.2022 8:51
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:29.9.2022 9:06

Navic, mi neni uplne jasne, jak se js zachova k tomu, kdyz:

  • volas funkci calculate(), kdyz jsi jeste zadnou nedefinoval pres function calculate() {...} . Je mozne, ze ti na to konzola vypisuje error a ty to vesele ignorujes a divis se, ze to nic nedela
  • nebo, kdyz pouzijes opakovana
          jQuery('#calculator input').keyup(function() {
...
          });
...
          jQuery('#calculator input').keyup(function() {
...

To, podle mne prepise funkci onkeyup, ne? Ale s jquery ovykle nepracuji, tak je mozne, ze to spoji oboje do jedne funkce. Jakoze..

functon f1(event) {...};
functon f2(event) {...};

element.onkeyup = f1;
element.onkeyup = f2; // toto obvykle prepisuje element.onkeyup na F2 a f1 je naprosto ignorovana  a nic z ni se na onkeyup neprovede.

A takovych malickosti se da najit na tech par radcich mnohem vic. Jen by to chtelo vyzkouset na tom html kodu, ktery je tak tajny. Na jednoduchem html kodu. Ne 10 strankach z nejakeho redakcniho systemu, kde si nemuzes byt jisty, jestli tam neni neco dalsiho, co to ovlivnuje...

 
Nahoru Odpovědět
29.9.2022 9:06
Avatar
JsonKody
Člen
Avatar
JsonKody:4.11.2022 11:13

Co to za jazyk? xD
To je spis nejaky spletenec/slepenec jQuerry ne?

Jestli chces poradit s tim jak podobne veci delat co mi napsat na discord?
Klidne bych se ti povenoval na streamu -> twitch -> jsonkody

nebo se podivej na YT .. dobry tutorialy ma napr. kanal -> hackni svou budoucnost -> javascript

 
Nahoru Odpovědět
4.11.2022 11:13
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.