Задать вопрос
  • Есть ли вирусы на Github?

    bingo347
    @bingo347
    Crazy on performance...
    Не один здравомыслящий человек инжектить вредоносный код в опенсорс не будет ибо это сразу подорвет репутацию, как только кто-либо подобный код обнаружит.
    Однако github сам никак не проверяет, что в него заливают (кроме размера файла) и теоретически в него можно залить что угодно
    Ответ написан
    Комментировать
  • Как изменить текст в title с помощью JS?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    document.title = "Я не умеющий гуглить лентяй";
    Ответ написан
    Комментировать
  • Максимальное число в массиве, как правильнее?

    profesor08
    @profesor08 Куратор тега JavaScript
    Еще так:
    function max(list) {
      return list.reduce((a, b) => a > b ? a : b);
    }


    Еще так:
    function max(list) {
      let max = list[0];
      list.forEach(function(e) {
        if (e > max) max = e;
      });
      return max;
    }
    Ответ написан
    7 комментариев
  • Как удалить все классы, начинающиеся с определённой подстроки?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Кого надо удалить: const classPrefix = 'modal--';

    Удаляем:

    Array.from(el.classList).forEach(n => el.classList.toggle(n, !!n.indexOf(classPrefix)));

    или

    el.classList.remove(...[...el.classList].filter(n => n.startsWith(classPrefix)));

    или

    for (let i = el.classList.length; i--;) {
      if (el.classList[i].search(classPrefix) === 0) {
        el.classList.remove(el.classList[i]);
      }
    }

    или

    el.classList.value = el.classList.value
      .split(' ')
      .filter(RegExp.prototype.test.bind(RegExp(`^(?!${classPrefix})`)))
      .join(' ');

    или

    el.className = el.className.replace(RegExp(`(^| )${classPrefix}\\S*`, 'g'), '').trim();
    Ответ написан
    9 комментариев
  • Как добавить класс в зависимости от количества блоков?

    0xD34F
    @0xD34F Куратор тега JavaScript
    document.querySelectorAll('.row').forEach(addClass);
    
    // или
    
    for (const n of document.getElementsByClassName('row')) {
      addClass(n);
    }

    Как выглядит функция addClass? Зависит от того, что вам нужно. Есть разные варианты:

    • Если добавляемый класс всегда содержит количество дочерних элементов:

      const addClass = el => el.classList.add(`row-${el.children.length}`);

    • Если добавлять класс надо не всегда и имя может быть произвольным, тогда можно сделать объект, где ключами будут количества дочерних элементов, а значениями - соответствующие классы:

      const classes = {
        3: 'row-3',
        5: 'row-5',
        7: 'row-xxx',
      };
      
      function addClass(el) {
        const className = classes[el.children.length];
        if (className) {
          el.classList.add(className);
        }
      }

    • Если класс должен добавляться когда количество дочерних элементов попадает в некоторый интервал, то складываем в массив пары из классов и верхних границ соответствующих интервалов:

      const classes = [
        { max:        3, name: 'row-0-3' },
        { max:        5, name:        '' }, // если дочерних элементов 4 или 5, класс не добавляется
        { max:        7, name: 'row-6-7' },
        { max: Infinity, name: 'row-7-x' },
      ];
      
      function addClass(el) {
        const { name } = classes.find(n => n.max >= el.children.length) ?? {};
        if (name) {
          el.classList.add(name);
        }
      }

    • В случае, когда классов может быть несколько, делаем массив, содержащий пары из классов и функций, принимающих количество элементов и определяющих, надо ли данные классы добавлять:

      const classes = [
        [ c => c < 5,          'row-0-4' ],
        [ c => c % 2,          'row-odd' ],
        [ c => 6 < c && c < 9, 'row-7-8' ],
      ];
      
      const addClass = ({ classList, children: { length } }) =>
        classList.add(...classes.reduce((acc, n) => (
          n[0](length) && acc.push(n[1]),
          acc
        ), []));

    Ответ написан
    Комментировать
  • Как мне передать переменную из дочернего класса в родительский?

    @entermix
    Столкнулся с такой проблемой, не знаю как передать переменную из дочернего класс в родительский.

    Никак, это невозможно, к счастью.
    Ответ написан
    Комментировать