Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
lugindev

lugindev

  • 10
    вклад
  • 0
    вопросов
  • 11
    ответов
  • 64%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Как реализовать такую анимацию при наведении?

    lugindev
    lugindev @lugindev
    Адаптируйте под свои нужды
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как подправить JS код на переключателе, а то я тупой?

    lugindev
    lugindev @lugindev
    Потому что querySelectorAll возвращает nodeList (массив)



    Можно записать все короче:


    // Выберем все инпуты и превратим NodeList в обычный массив, 
    // чтобы можно было применять методы массива 
    // [...] - деструктуризация
    const inputs = [...document.querySelectorAll("input")]
    
    // Определим объект с цветами "0" - если ничего не выбрано
    // Остальные совпадают с value
    const colors = {
      "0": "#03f3f3",
      "1": "#00ff00",
      "2": "#ccff00"
    }
    
    inputs.forEach(input => {
      // пройдемся циклом по всем инпутам
      input.addEventListener('click', () => {
        // Добавим обработчик на каждый инпут
        // inputs.some(i => i.checked) - проверка есть ли хоть один инпут cheсked
        // если нет цвет для body по ключу "0"
        // если есть по ключу input.value ("1"|"2")
        document.body.style.backgroundColor = inputs.some(i => i.checked) 
          ? colors[input.value]
          : colors["0"]
      })
    })
    Ответ написан более двух лет назад
    4 комментария
    4 комментария
  • Как отобразить html во vue?

    lugindev
    lugindev @lugindev
    Ответ написан более двух лет назад
    3 комментария
    3 комментария
  • Как еще можно написать этот скрипт?

    lugindev
    lugindev @lugindev
    Ну во-первых, каждый раз делать querySelector плохая идея.



    Еще вариант:
    Ответ написан более двух лет назад
    5 комментариев
    5 комментариев
  • В чем изьяны моего чудища?

    lugindev
    lugindev @lugindev
    const getMaxSumm = arr => arr.reduce((acc, el) => {
        acc[1] += el, acc[0] = Math.max(...acc)
        acc[1] < 0 && (acc[1] = 0)
        return acc
    }, [0, 0])[0]
    
    function tests() {
        [
            [[2, -1, 2, 3, -9], 6],
            [[-1, 2, 3, -9], 5],
            [[2, -1, 2, 3, -9], 6],
            [[-9, 7, 2, 3, -9], 12],
            [[-1, 2, 3, -9, 11], 11],
            [[-2, -1, 1, 2], 3],
            [[100, -9, 2, -3, 5], 100],
            [[1, 2, 3], 6],
            [[1, 2, 3, 5, -66, 22, 333, -2223, 213, 1122], 1335]
        ].forEach(arr => {
            console.log(getMaxSumm(arr[0]), arr[1])
        })
    }
    
    tests()
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как решить задачку с массивами на js?

    lugindev
    lugindev @lugindev
    Undefined, т.к. переменная result у вас нигде не объявлена.
    Строки нужно приводить к числам для сложения
    const money = ['eur 10', 'usd 1', 'usd 10', 'rub 50', 'usd 5']
    
    // Нужно объявить переменную, к которой суммировать
    let summ = 0
    
    for(let i = 0; i < money.length; i++) {
    	// Разобьем строку по пробелу
    	// 'eur 10' => ['eur', '10']
    	const parts = money[i].split(' ')
      if (parts[0] === 'usd') {
      	// parts[1] это строка, нужно привести к числу
    		// parseInt(parts[1]) или короткая запись +parts[1]
      	summ += +parts[1]
      }
      
      // Условие можно записать в 1 строку
    	// if (parts[0] === 'usd') summ += +parts[1]
    
    	// Или даже так:
    	// parts[0] === 'usd' && (summ += +parts[1])
    }
    
    console.log(summ)


    https://jsfiddle.net/1u65epLk/
    UPD: и не пишите транслитом) const itog = ..
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как сделать адекватную обработку event в JS?

    lugindev
    lugindev @lugindev
    Вам не нужно вешать обработчик на каждую кнопку. Когда логика будет чуть сложнее у вас получится монолит с огромной вложенностью. Достаточно одного обработчика на родителе это лучше как с точки производительности так и с точки дальнейшей поддержки кода. Я написал немного кода для вас. Там есть обработчик и другие фишки. Думаю вам будет интересно разобраться с ним. https://jsfiddle.net/edc9qayw/3/
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • GreenSock или anime.js?

    lugindev
    lugindev @lugindev
    GSAP | Anime

    ----
    Однозначно для сложных GSAP
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как сгруппировать данные во Vue?

    lugindev
    lugindev @lugindev
    Если верно вас понял, то так.
    Но
    с уникальными значениями
    по какому параметру уникальными?
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как на js отследить координаты объекта?

    lugindev
    lugindev @lugindev
    Адаптируете под себя
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как создать функцию, которая удаляла бы последний элемент из массива без использования array.pop()?

    lugindev
    lugindev @lugindev
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
Оценили как «Нравится»
Самые активные сегодня
  • UthvfyV
    • 12 ответов
    • 0 вопросов
  • CityCat4
    CityCat4
    • 6 ответов
    • 0 вопросов
  • pindschik
    pindschik
    • 6 ответов
    • 0 вопросов
  • tolmasoft
    • 4 ответа
    • 1 вопрос
  • eres_time
    • 4 ответа
    • 0 вопросов
  • Mike_Ro
    Михаил Р.
    • 3 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации