• Как удалить элемент с поля?

    @UnformedVoid
    Разработчик ПО
    Вы пользуетесь канвасом как хранилищем состояния — это императивный подход и от этого неудобный. Это как с JQuery, только хуже, потому что тут у вас нет селекторов. Вы не должны опираться на то, что нарисовано на канвасе. Ваш канвас должен служить просто представлением. Вынесите все ваши данные в JS в качестве массива или объекта — как вам удобно. Далее напишите код, который будет перерисовывать ваш канвас при изменении состояния. Есть два способа решать проблемы: первый — тот, которым вы пытались решить вопрос — прямой способ, второй способ — это поменять задачу так, чтоб в новом контексте проблема стала невозможной, бессмысленной, в общем перестала существовать. Если вы вынесите всю логику в JS, то вопроса «как удалить» у вас не останется.
    Ответ написан
    4 комментария
  • Как написать такое условие?

    Когда начинаются такие сложности, важно остановиться и понять, что вы зашли в тупик. Не нужно уподобляться рубистам с их эзотерическим языком, пытающихся упаковать все в однострочники. Мы, слава б-гу, пишем на JS.

    Однострочные условия хороши тогда, когда вы проверяете не более 1го, максимум, 2х утверждений, когда if будет избыточен, или когда вам нужно по дефолту присвоить какое-то значение в зависимости от проверки (конструкция вида foo.bar || false). Во всех других случаях необходимо использовать полноценный if, потому что, как вы сами заметили, при необходимости встроить в условие еще одну проверку можно начать "тупить" - сделать это на порядок сложнее.
    if(variable && (!secondVariable || !thirdVariable)) {
        return 1;
    }
    
    return 2;
    Ответ написан
    Комментировать
  • Проблема c CORS запросом, как исправить?

    bingo347
    @bingo347
    Crazy on performance...
    заголовки вида Access-Control-Allow-* - это заголовки ответа, их должен отправлять сервер в ответ на запрос
    притом если запрос OPTIONS (браузер шлет сам перед основным запросом для проверки прав), то сервер должен так же ответить этими заголовками, но со статусом 204 и без тела
    Ответ написан
    2 комментария
  • Как сделать слайдер зацикленным?

    0xD34F
    @0xD34F Куратор тега React
    Не надо закидывать картинки в стейт, пусть компонент получает их через props.

    Добавите в стейт свойство, содержащее индекс отображаемой картинки, делайте ему +/- 1, в зависимости от нажатой кнопки, выход за границы массива поправляйте через взятие остатка от деления на его длину:

    state = {
      active: 0,
    }
    
    nextSlideHandler = ({ target: { dataset: { step } } }) => {
      const len = this.props.images.length;
    
      this.setState(({ active }) => ({
        active: (active + len + +step) % len,
      }));
    }


    <button data-step="-1" onClick={this.nextSlideHandler} className="prev">prev</button>
    <button data-step="+1" onClick={this.nextSlideHandler} className="next">next</button>
    <img src={this.props.images[this.state.active]} />

    https://jsfiddle.net/e7vzm9kq/
    Ответ написан
    Комментировать
  • Какой смысл оборачивать ajax запрос в промис?

    profesor08
    @profesor08 Куратор тега JavaScript
    В данном случае никакого, axios и так его должен возвращать.
    Ответ написан
    6 комментариев
  • Функция для перевода из десятичной в двоичную систему?

    BRAGA96
    @BRAGA96
    (3578557).toString(2); // '1101101001101010111101'
    Ответ написан
    Комментировать
  • Защита от изменения DOM через консоль?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Логичнее, как раз, проверять всё на сервере. Запрос можно выдать и минуя браузер.
    Ответ написан
    Комментировать
  • Что нужно сделать перед тем как залить HTML 5 шаблон на хостинг?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Какие проверки провести?
    Проверка соответствия стандартам W3C:
    HTML: https://validator.w3.org/
    CSS: https://jigsaw.w3.org/css-validator/

    P.S. не нашёл нужные ответы в паутине
    кто считает так же - лайк не ставим!)
    Ответ написан
    2 комментария
  • Может ли tbody сам появляться?

    delphinpro
    @delphinpro Куратор тега HTML
    frontend developer
    не "может", а "обязательно появится".
    Ответ написан
    1 комментарий
  • Как реализовать нейронную сеть для распознавания символов?

    Для начала проще всего реализовать что-то, разобравшись с готовой библиотекой. Например, ConvNetJS.

    Вот пример распознавания символов MNIST на JS.
    Ответ написан
    Комментировать
  • Как растянуть div по всей ширине страницы?

    iiiBird
    @iiiBird Куратор тега CSS
    Пока ты спишь - твой конкурент совершенствуется
    задать для .info {width: 100%;}
    Ответ написан
    8 комментариев
  • Наследование об базового класса Object в c#?

    ayazer
    @ayazer
    Sr. Software Engineer
    если мы ничего явно не указываем - мы наследуем базовый Object. Если мы указываем какой-то класс - мы наследуем именно его (а он уже в свою очередь наследует базовый Object)
    Ответ написан
  • Что такое замыкание?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    В целом ты все верно понял. Почитал я тут ответы, термины, термины, термины...

    Я люблю простые объяснения, буквально на пальцах.

    Вот ты вызвал функцию, в ней создаются переменные локальной области видимости, т.е. доступные только самой функции. Под эти переменные движок JavaScript выделяет память.

    Когда обычная функция завершает свое выполнение, освобождает память, которую выделял раньше, если на переменные не осталось ссылок.

    В случае с замыканием, ты возвращаешь функцию обратно, т.е. ссылки остаются, поэтому движок не может освободить память, и переменные остаются доступными функции, и более никому. Поэтому эта штука и называется замыкание, т.к. переменные замкнуты на саму функцию.

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

    Один из основных паттернов, для которых применяются замыкания - ограничение доступа к данным, их изоляция (ограничение их области видимости).

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

    В ответах есть пример со счетчиком, который наглядно демонстрирует этот принцип.
    Ответ написан
    2 комментария
  • Как открыть страницу HTML загруженную на Google Drive?

    vicodin
    @vicodin
    Имею некоторый опыт
    На конкретный вопрос не отвечу, но когда сам искал подобный "хостинг" для быстрого показа работ клиентам, наткнулся на GitHub Pages, пользуюсь до сих пор. https://pages.github.com/

    Это будет ещё удобнее.
    Ответ написан
    2 комментария
  • В чем разница императивного и декларативного подхода в javascript? Это процедурный и ООП стили?

    @pikkvile
    developer
    Моё понимание такое.
    Декларативное программирование - это когда в коде описано что должно получиться, а императивное - когда написано как это сделать. Т.е. в первом случае мы совершенно не интересуемся, каким именно образом машина сделает работу, какие инструкции в каком порядке выполнятся и так далее, мы просто объясняем ей, что хотим увидеть в результате. Примеры декларативных языков - html, css, sql, конфиг nginx. Ещё тут стоит упомянуть функциональные языки (lisp, haskell), программы на них тоже, как правило, являются описанием (декларацией) того "что должно получиться". Ну, короче говоря, мы говорим компьютеру: вот смотри, мне надо чтобы было так, а как ты это сделаешь, мне не интересно. Аналогия такая: у меня есть чертёж бани, я даю его бригаде строителей и уезжаю. Как именно они там будут таскать брёвна, пилить доски и прочее - я не в курсе.
    Программируя императивно, мы описываем конкретные шаги, действия и точный порядок, в котором их нужно исполнять. Напрямую руководим процессом, непосредственно отдаём приказания. Примеров масса, большинство популярных языков императивны, в том числе и javascript. Ты пишешь: вот, сделай-ка переменную myVar, потом запиши туда число 5, повторяй это до тех пор, пока что-то не случится... и так далее. Возвращаясь к примеру с баней, ты теперь - начальник бригады, именно говоришь какое бревно куда класть.
    Что касается процедурного и объектно ориентированного стилей, это немного о другом. Я бы сказал, что это два разных способа писать императивные программы. В процедурном случае мы организуем код, наши команды (приказы машине) в виде процедур. Процедура - набор команд. Это довольно простой способ организации кода и исторически более ранний. ООП - это чуть более сложный подход к организации кода, когда мы группируем инструкции и данные, которыми они манипулируют, вместе. Объект - это состояние (данные) плюс поведение (набор методов). Но это уже немного другая история.
    Ответ написан
    2 комментария
  • В чем разница императивного и декларативного подхода в javascript? Это процедурный и ООП стили?

    x67
    @x67
    Императивный подход - ты рассказываешь машине, как решить задачу.
    Декларативный подход - ты рассказываешь машине, какой результат от нее хочешь. Тут примером может быть sql - запрос, в котором ты описываешь, какими свойствами обладают данные, которые ты хочешь получить. А как ищутся и сортируются эти данные, ты не пишешь и грубо говоря тебя это не интересует.
    Ответ написан
    4 комментария