Задать вопрос

Как можно сократить скрипт?

Всем привет, кто разбирается хорошо в jquery или javascript, можете помочь сократить код и написать его правильно (он работает, но громоздкий 208 строк).

jq_144(document).ready(function($) {

var i = 1;
$('#number').html(i);
  
    $('#block-new278').click(
        function() {
      if(i<2) {
        i = 5;
      } else {
        i--;
      }
      
            $('#number').html(i);

if (i == 1) {
    $('#price1').html('2150 руб.');
    $('#price2').html('2200 руб.');
    $('#price3').html('2350 руб.');
    $('#price4').html('1600 руб.');
    $('#price5').html('1450 руб.');
    $('#price6').html('1500 руб.');
    $('#price7').html('1650 руб.');
    $('#price8').html('900 руб.');
    $('#itogo1').html('1450 руб.');
    $('#itogo2').html('1500 руб.');
    $('#itogo3').html('1650 руб.');
    $('#itogo4').html('900 руб.');
    $('#itogo5').html('2150 руб.');
    $('#itogo6').html('2200 руб.');
    $('#itogo7').html('2350 руб.');
    $('#itogo8').html('1600 руб.');
}else if (i == 2) {
    $('#price1').html('1800 руб.');
    $('#price2').html('1850 руб.');
    $('#price3').html('2000 руб.');
    $('#price4').html('1250 руб.');
    $('#price5').html('1150 руб.');
    $('#price6').html('1200 руб.');
    $('#price7').html('1350 руб.');
    $('#price8').html('600 руб.');
    $('#itogo1').html('2300 руб.');
    $('#itogo2').html('2400 руб.');
    $('#itogo3').html('2700 руб.');
    $('#itogo4').html('1200 руб.');
    $('#itogo5').html('3600 руб.');
    $('#itogo6').html('3700 руб.');
    $('#itogo7').html('4000 руб.');
    $('#itogo8').html('2500 руб.');
}else if (i == 3){
    $('#price1').html('1617 руб.');
    $('#price2').html('1667 руб.');
    $('#price3').html('1817 руб.');
    $('#price4').html('1100 руб.');
    $('#price5').html('1017 руб.');
    $('#price6').html('1067 руб.');
    $('#price7').html('1217 руб.');
    $('#price8').html('467 руб.');
    $('#itogo1').html('3050 руб.');
    $('#itogo2').html('3200 руб.');
    $('#itogo3').html('3650 руб.');
    $('#itogo4').html('1400 руб.');
    $('#itogo5').html('4850 руб.');
    $('#itogo6').html('5000 руб.');
    $('#itogo7').html('5450 руб.');
    $('#itogo8').html('3300 руб.');
}else if (i == 4){
    $('#price1').html('1525 руб.');
    $('#price2').html('1575 руб.');
    $('#price3').html('1725 руб.');
    $('#price4').html('1025 руб.');
    $('#price5').html('950 руб.');
    $('#price6').html('1000 руб.');
    $('#price7').html('1150 руб.');
    $('#price8').html('400 руб.');
    $('#itogo1').html('3800 руб.');
    $('#itogo2').html('4000 руб.');
    $('#itogo3').html('4600 руб.');
    $('#itogo4').html('1600 руб.');
    $('#itogo5').html('6100 руб.');
    $('#itogo6').html('6300 руб.');
    $('#itogo7').html('6900 руб.');
    $('#itogo8').html('4100 руб.');
}else if (i == 5){
    $('#price1').html('1470 руб.');
    $('#price2').html('1520 руб.');
    $('#price3').html('1670 руб.');
    $('#price4').html('980 руб.');
    $('#price5').html('910 руб.');
    $('#price6').html('960 руб.');
    $('#price7').html('1110 руб.');
    $('#price8').html('360 руб.');
    $('#itogo1').html('4550 руб.');
    $('#itogo2').html('4800 руб.');
    $('#itogo3').html('5550 руб.');
    $('#itogo4').html('1800 руб.');
    $('#itogo5').html('7350 руб.');
    $('#itogo6').html('7600 руб.');
    $('#itogo7').html('8350 руб.');
    $('#itogo8').html('4900 руб.');
}

        }
    );

    $('#block-new279').click(
        function() {
      if(i>4) {
        i = 1;
      } else {
        i++;
      }

            $('#number').html(i);

if (i == 1) {
    $('#price1').html('2150 руб.');
    $('#price2').html('2200 руб.');
    $('#price3').html('2350 руб.');
    $('#price4').html('1600 руб.');
    $('#price5').html('1450 руб.');
    $('#price6').html('1500 руб.');
    $('#price7').html('1650 руб.');
    $('#price8').html('900 руб.');
    $('#itogo1').html('1450 руб.');
    $('#itogo2').html('1500 руб.');
    $('#itogo3').html('1650 руб.');
    $('#itogo4').html('900 руб.');
    $('#itogo5').html('2150 руб.');
    $('#itogo6').html('2200 руб.');
    $('#itogo7').html('2350 руб.');
    $('#itogo8').html('1600 руб.');
}else if (i == 2) {
    $('#price1').html('1800 руб.');
    $('#price2').html('1850 руб.');
    $('#price3').html('2000 руб.');
    $('#price4').html('1250 руб.');
    $('#price5').html('1150 руб.');
    $('#price6').html('1200 руб.');
    $('#price7').html('1350 руб.');
    $('#price8').html('600 руб.');
    $('#itogo1').html('2300 руб.');
    $('#itogo2').html('2400 руб.');
    $('#itogo3').html('2700 руб.');
    $('#itogo4').html('1200 руб.');
    $('#itogo5').html('3600 руб.');
    $('#itogo6').html('3700 руб.');
    $('#itogo7').html('4000 руб.');
    $('#itogo8').html('2500 руб.');
}else if (i == 3){
    $('#price1').html('1617 руб.');
    $('#price2').html('1667 руб.');
    $('#price3').html('1817 руб.');
    $('#price4').html('1100 руб.');
    $('#price5').html('1017 руб.');
    $('#price6').html('1067 руб.');
    $('#price7').html('1217 руб.');
    $('#price8').html('467 руб.');
    $('#itogo1').html('3050 руб.');
    $('#itogo2').html('3200 руб.');
    $('#itogo3').html('3650 руб.');
    $('#itogo4').html('1400 руб.');
    $('#itogo5').html('4850 руб.');
    $('#itogo6').html('5000 руб.');
    $('#itogo7').html('5450 руб.');
    $('#itogo8').html('3300 руб.');
}else if (i == 4){
    $('#price1').html('1525 руб.');
    $('#price2').html('1575 руб.');
    $('#price3').html('1725 руб.');
    $('#price4').html('1025 руб.');
    $('#price5').html('950 руб.');
    $('#price6').html('1000 руб.');
    $('#price7').html('1150 руб.');
    $('#price8').html('400 руб.');
    $('#itogo1').html('3800 руб.');
    $('#itogo2').html('4000 руб.');
    $('#itogo3').html('4600 руб.');
    $('#itogo4').html('1600 руб.');
    $('#itogo5').html('6100 руб.');
    $('#itogo6').html('6300 руб.');
    $('#itogo7').html('6900 руб.');
    $('#itogo8').html('4100 руб.');
}else if (i == 5){
    $('#price1').html('1470 руб.');
    $('#price2').html('1520 руб.');
    $('#price3').html('1670 руб.');
    $('#price4').html('980 руб.');
    $('#price5').html('910 руб.');
    $('#price6').html('960 руб.');
    $('#price7').html('1110 руб.');
    $('#price8').html('360 руб.');
    $('#itogo1').html('4550 руб.');
    $('#itogo2').html('4800 руб.');
    $('#itogo3').html('5550 руб.');
    $('#itogo4').html('1800 руб.');
    $('#itogo5').html('7350 руб.');
    $('#itogo6').html('7600 руб.');
    $('#itogo7').html('8350 руб.');
    $('#itogo8').html('4900 руб.');
}

        }
    );

});
  • Вопрос задан
  • 204 просмотра
Подписаться 3 Оценить 2 комментария
Решения вопроса 1
Stalker_RED
@Stalker_RED
Можно как-то так
var allValues = {
    1: {
        price: [2150,2200,2350,1600,1450,1500,1650,900],
        itogo: [1450,1500,1650,900,2150,2200,2350,1600]
    },
    2: {
        price: [1800,1850,2000,1250,1150,1200,1350,600],
        itogo: [2300,2400,2700,1200,3600,3700,4000,2500]
    },
    3: {
        price: [1617,1667,1817,1100,1017,1067,1217,467],
        itogo: [3050,3200,3650,1400,4850,5000,5450,3300]
    },
    4: {
        price: [1525,1575,1725,1025,950,1000,1150,400],
        itogo: [3800,4000,4600,1600,6100,6300,6900,4100]
    },
    5: {
        price: [1470,1520,1670,980,910,960,1110,360],
        itogo: [4550,4800,5550,1800,7350,7600,8350,4900]
    }
}

function setValues(allValues, i) {
    var currency = ' руб.'
    var valuesGroup = allValues[i]
    for (var n in valuesGroup.price) {
        $('#price' + n).html(valuesGroup.price[n] + currency)
    }
    for (var n in valuesGroup.itogo) {
        $('#itogo' + n).html(valuesGroup.itogo[n] + currency)
    }
}

setValues(allValues, 2)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
набор данных нужно поместить в массив
далее - просто рендерить нужную ветку
Ответ написан
Комментировать
@tplus
Как минимум, вынесите все эти

if (i == N) {
  $('#priceM').html('XXX руб.');
}

В какой-нибудь словарь вида
1: [itogo1, itogo2, ... price1, price2...]

берите из него по ключу i значение для конкретного случая и в цикле заполняйте price и itogo.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы