@ZZiliST
Изучаю JS, CSS, HTML, PHP

Как можно оптимизировать код?

Прошу прощения, я только учусь. Имеется вот такой код:
$( ".btn-change-sect" ).click(function() {
	  switch (this.id) {
		  case 'btn-block-section-1':
			 document.getElementById("block-section-1").style.display="block";
			 document.getElementById("block-section-2").style.display="none";
			 document.getElementById("block-section-3").style.display="none";
			 document.getElementById("block-section-4").style.display="none";
			 
			 document.getElementById("btn-block-section-2").style.borderBottom = "2px solid #fff";
			 document.getElementById("btn-block-section-3").style.borderBottom = "2px solid #fff";
			 document.getElementById("btn-block-section-4").style.borderBottom = "2px solid #fff";
			 this.style.borderBottom = "2px solid #ff7300";
			break;
		  case 'btn-block-section-2':
			 document.getElementById("block-section-2").style.display="block";
			 document.getElementById("block-section-1").style.display="none";
			 document.getElementById("block-section-3").style.display="none";
			 document.getElementById("block-section-4").style.display="none";
			 
			 document.getElementById("btn-block-section-1").style.borderBottom = "2px solid #fff";
			 document.getElementById("btn-block-section-3").style.borderBottom = "2px solid #fff";
			 document.getElementById("btn-block-section-4").style.borderBottom = "2px solid #fff";
			 this.style.borderBottom = "2px solid #ff7300";
			break;
		  case 'btn-block-section-3':
			 document.getElementById("block-section-3").style.display="block";
			 document.getElementById("block-section-2").style.display="none";
			 document.getElementById("block-section-1").style.display="none";
			 document.getElementById("block-section-4").style.display="none";
			 
			 document.getElementById("btn-block-section-2").style.borderBottom = "2px solid #fff";
			 document.getElementById("btn-block-section-1").style.borderBottom = "2px solid #fff";
			 document.getElementById("btn-block-section-4").style.borderBottom = "2px solid #fff";
			 this.style.borderBottom = "2px solid #ff7300";
			break;
		  case 'btn-block-section-4':
			 document.getElementById("block-section-4").style.display="block";
			 document.getElementById("block-section-2").style.display="none";
			 document.getElementById("block-section-3").style.display="none";
			 document.getElementById("block-section-1").style.display="none";
			 
			 document.getElementById("btn-block-section-2").style.borderBottom = "2px solid #fff";
			 document.getElementById("btn-block-section-3").style.borderBottom = "2px solid #fff";
			 document.getElementById("btn-block-section-1").style.borderBottom = "2px solid #fff";
			 this.style.borderBottom = "2px solid #ff7300";
			break;
		}
	});


Чует сердце, что это можно как-то оптимизировать, но как не хватает уровня знаний... Так же буду признателен если скинете какие-нибудь статьи или литературу, где рассматриваются такие банальные примеры по оптимизации.
  • Вопрос задан
  • 271 просмотр
Решения вопроса 1
@MadridianFox
Web-программист, многостаночник
Во-первых, отличия в стиле надо выносить в классы.
.btn-change-sect {
    display: none;
    border-bottom: 2px solid #ffffff;
}

.active {
   display: block;
   border-bottom: 2px solid #ff7300;
}

Во-вторых, не стоит привязываться к конкретике, в вашем случае, при клике есть только текущий элемент и все остальные
$( ".btn-change-sect" ).click(function() {
    // убираем активный стиль со всех подобных элементов
    $( ".btn-change-sect" ).removeClass("active");
    // ставим активный стиль текущему элементу
    $(this).addClass("active");
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы