Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [skrypt]Rozmiarówka w JS z Prototype i Scriptaculous
Forum PHP.pl > Inne > Oceny
jaworr
Na wstępie poprosiłbym o sporo wyrozumiałości praktycznie nie znam JS więc chciałbym abyście drodzy koledzy zerknęli na skrypt i przeanalizowali go pod kątem prawidłowego pisania skryptów w JS, błędów początkującego i innych dupereli. Wszelaka krytyka mile widziana smile.gif
http://www.gaia.org.pl/tabela.html

Kod
  <script type="text/javascript">
  // <![CDATA[
    //deklaracja suwaków; Slider1(obwód w biuscie), Slider2(obowód pod biustem), Slider(obwód w biodrach)
   var Slider1 =  new Control.Slider('handle1','track1',{
      range: $R(75,154),// zakres w cm dla obwodu w biuscie
      sliderValue:95,//wartosc domyslna
      //onSlide,onChange na akcje przesuwania zaokrąglamy wartosc suwaka do 0 miejsc po przecinku i dynamicznie zmieniamy zakres suwaka Slider2 tak aby nie wyszedł poza zakres ustalony w tabeli rozmiarów.
      onSlide:function(v){$('debug1').value=Math.round(v*1)/1;if (Slider1.value-Slider2.value<12){Slider2.setValue(v-12)}else if (Slider1.value-Slider2.value>33){Slider2.setValue(v-32)};},
      onChange:function(v){$('debug1').value=Math.round(v*1)/1;if (Slider1.value-Slider2.value<12){Slider2.setValue(v-12)}else if (Slider1.value-Slider2.value>33){Slider2.setValue(v-32)};}});
    var Slider2 = new Control.Slider('handle2','track2',{
      range: $R(63,122),// zakres w cm dla obwodu pod biustem
      sliderValue:95,//wartosc domyslna
      //onSlide,onChange na akcje przesuwania zaokrąglamy wartosc suwaka do 0 miejsc po przecinku i dynamicznie zmieniamy zakres suwaka Slider1 tak aby nie wyszedł poza zakres ustalony w tabeli rozmiarów.
      onSlide:function(v){$('debug2').value=Math.round(v*1)/1; if (Slider1.value-Slider2.value<12){Slider1.setValue(v+12)}else if (Slider1.value-Slider2.value>33){Slider1.setValue(v+32)};},
      onChange:function(v){$('debug2').value=Math.round(v*1)/1; if (Slider1.value-Slider2.value<12){Slider1.setValue(v+12)}else if (Slider1.value-Slider2.value>33){Slider1.setValue(v+32)};}});
    new Control.Slider('handle3','track3',{
      range: $R(92,112),// zakres w cm dla obwodu w biodrach
      sliderValue:95,//wartosc domyslna
      //onSlide,onChange zaokrąglamy wartośc z suwaka do 0 miejsc po przecinku
      onSlide:function(v){$('debug3').value=Math.round(v*1)/1},
      onChange:function(v){$('debug3').value=Math.round(v*1)/1}});
    function przelicz()//funkcja przeliczajaca wartosci z suwakow na kompletny juz rozmiar.
    {
        //pobieranie wartosci z inputów
        var v1 = document.getElementById('debug1').value;
        var v2 = document.getElementById('debug2').value;
        var v3 = document.getElementById('debug3').value;
        var wynik = v1-v2;//miseczka biustonosza czyli roznica w rozmiarach obwód w biuscie - obwod pod biustem (Slider1-Slider2)
        var rozmiar = v3;//rozmiar majtek
            //sprawdzamy czy wynik jest wiekszy od 0 w innym przypadku wyswietlamy "Błąd"
            if (wynik<1){$('wynik').innerHTML="Błąd."}
            //tutaj leci juz dopasowanie wynikow do tabeli rozmiarow i zaokraglenie rozmiaru pod biustem do wielokrotnosci 5, czyli
            //jeżeli mamy rozmiar pod biustem = 66cm to skrypt zaokragli nam do 65cm, jeżeli zaś mamy rozmiar pod biustem = 68cm
            //zaokragli nam do 70 cm
            else if( wynik>11 && wynik<15){{$('wynik').innerHTML="Rozmiar biustonosza: " + Math.round(v2/5)*5 + "A"};}
            else if (wynik>13 && wynik<18){{$('wynik').innerHTML="Rozmiar biustonosza: " + Math.round(v2/5)*5 + "B"};}
            else if (wynik>17 && wynik<19){{$('wynik').innerHTML="Rozmiar biustonosza: " + Math.round(v2/5)*5 + "C"};}
            else if (wynik>18 && wynik<21){{$('wynik').innerHTML="Rozmiar biustonosza: " + Math.round(v2/5)*5 + "D"};}
            else if (wynik>20 && wynik<23){{$('wynik').innerHTML="Rozmiar biustonosza: " + Math.round(v2/5)*5 + "E"};}
            else if (wynik>22 && wynik<25){{$('wynik').innerHTML="Rozmiar biustonosza: " + Math.round(v2/5)*5 + "F"};}
            else if (wynik>24 && wynik<27){{$('wynik').innerHTML="Rozmiar biustonosza: " + Math.round(v2/5)*5 + "G"};}
            else if (wynik>26 && wynik<29){{$('wynik').innerHTML="Rozmiar biustonosza: " + Math.round(v2/5)*5 + "H"};}
            else if (wynik>28 && wynik<31){{$('wynik').innerHTML="Rozmiar biustonosza: " + Math.round(v2/5)*5 + "I"};}
            else if (wynik>30 && wynik<33){{$('wynik').innerHTML="Rozmiar biustonosza: " + Math.round(v2/5)*5 + "J"};}
            else if (wynik>33){{$('wynik').innerHTML="Błąd."};}
            if (rozmiar<92){$('rozmiar').innerHTML="Rozmiar majtek: "+"XS"}
            else if(rozmiar>51 && rozmiar<97){{$('rozmiar').innerHTML="Rozmiar majtek: "+"S"};}
            else if(rozmiar>96 && rozmiar<101){{$('rozmiar').innerHTML="Rozmiar majtek: "+"M"};}
            else if(rozmiar>100 && rozmiar<105){{$('rozmiar').innerHTML="Rozmiar majtek: "+"L"};}
            else if(rozmiar>104 && rozmiar<108){{$('rozmiar').innerHTML="Rozmiar majtek: "+"XL"};}
            else if(rozmiar>107){{$('rozmiar').innerHTML="Rozmiar majtek: "+"XXL"};}
    }
if (document.images)//zamiana obrazkow pogladowych na akcje hover na suwakach
{
    image_off= new Image(184,276);
    image_off.src="http://www.gaia.org.pl/media/gaia/tabela_rozmiarow/w_biuscie.jpg";
    image2= new Image(184,276);
    image2.src="http://www.gaia.org.pl/media/gaia/tabela_rozmiarow/pod_biustem.jpg";
    image3= new Image(184,276);
    image3.src="http://www.gaia.org.pl/media/gaia/tabela_rozmiarow/w_biodrach.jpg";
    image4= new Image(184,276);
    image4.src="http://www.gaia.org.pl/media/gaia/tabela_rozmiarow/w_biuscie.jpg";
}
function change1(picName,imgName)
{
    if (document.images)
      {
        imgOn=eval(imgName + ".src");
       document[picName].src= imgOn;
      }
}
  // ]]>
  </script>
askone
Jeśli już korzystasz z jquery to rób to konsekwentnie:
  • albo w całym kodzie stosujesz zapis $('#id')
  • albo document.getElementById('id')


Pozdrawiam
zegarek84
Cytat(askone @ 16.02.2011, 13:36:04 ) *
Jeśli już korzystasz z jquery to rób to konsekwentnie...

akurat w tym kodzie to skrót do metody z bibliteki prototype....
askone
Ok. Nie zmienia to jednak faktu, że autor wątku korzysta z prototype i DOM naprzemiennie. Dobrze by było aby był konsekwentny smile.gif
jaworr
Dziękuje za podpowiedzi. Będę zwracał na to uwagę przy następnych bajerach pisanych w js smile.gif
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-2024 Invision Power Services, Inc.