o058oo
@o058oo
Кофе, код и рок-н-ролл!

Как сократить код JS?

Имеются классы value1, value2, value3 ... value100500. Меняется только цифра у value.
Как сократить код?
function ready() {
		document.querySelectorAll(`.value1 [class^=line]`).forEach(div => {
			document.querySelector(`.value1 .${div.className}`).classList.add('visible');
		});
		document.querySelectorAll(`.value2 [class^=line]`).forEach(div => {
			document.querySelector(`.value2 .${div.className}`).classList.add('visible');
		});
		document.querySelectorAll(`.value3 [class^=line]`).forEach(div => {
			document.querySelector(`.value3 .${div.className}`).classList.add('visible');
		});
		document.querySelectorAll(`.value4 [class^=line]`).forEach(div => {
			document.querySelector(`.value4 .${div.className}`).classList.add('visible');
		});
		document.querySelectorAll(`.value5 [class^=line]`).forEach(div => {
			document.querySelector(`.value5 .${div.className}`).classList.add('visible');
		});
		document.querySelectorAll(`.value6 [class^=line]`).forEach(div => {
			document.querySelector(`.value6 .${div.className}`).classList.add('visible');
		});
		document.querySelectorAll(`.value7 [class^=line]`).forEach(div => {
			document.querySelector(`.value7 .${div.className}`).classList.add('visible');
		});
	}
  • Вопрос задан
  • 150 просмотров
Решения вопроса 3
function ready() {
  for(let i = 1; i <= 7; i++) {
    makeVisible("value" + i);
  }
}
function makeVisible(selector) {
    document.querySelectorAll('.'+selector+" [class^=line]").forEach(div => {
      document.querySelector(`.${selector} .${div.className}`).classList.add('visible');
    });
}

Но вообще код странный
Ответ написан
Комментировать
@hello_my_name_is_dany
Backend Developer (Node.js, PHP, C#)
for (let i = 1; i <= 7; i++ ) {
  document.querySelectorAll(`.value${i} [class^=line]`).forEach(div => {
    document.querySelector(`.value${i} .${div.className}`).classList.add('visible');
  });
}
Ответ написан
Комментировать
Tim-A-2020
@Tim-A-2020
Слишком мало информации. Не понятно, что вы пытаетесь сделать. Лучше конечно залить демку и объяснить. Я не понимаю зачем нужно использовать столько циклов. Если добавление класса зависит от родителя , то можно примерно так сократить:
document.querySelectorAll(`[class^=line]`).forEach((item, i) => {
   const parent = item.closest(`.value${i + 1}`);
   if (i < 7 && parent) {
     item.classList.add('visible');
   }
 })

Опять таки может быть много подводных камней. Поэтому лучше описать более подробно
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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