Ответы пользователя по тегу JavaScript
  • Как решить проблему связи между https и http?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    Воспользоваться сертификатом Let’s Encrypt, он бесплатный: https://letsencrypt.org/
    Ответ написан
    1 комментарий
  • Где я допустил ошибку при проверке true/false инпутов?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    Привет! Давайте разберём ваш код.

    Во-первых, вы заполняете массив в самом начале:
    // Создали массив
    var stepSecond = [];
    // Сохранили в него свойства checked разных объектов
    stepSecond[1] = $('#firmware2').prop('checked');
    stepSecond[2] = $('[name="stamping"]').prop('checked');
    stepSecond[3] = $('#eyelet-color').prop('checked');
    stepSecond[4] = $('[name="rubber-flat"]').prop('checked');

    При изменении инпутов их состояния не попадут в массив автоматически.

    Во-вторых, проверка $(stepSecond == 'true') очень странная. stepSecond — массив из 5 элементов (на нулевом месте у вас undefined, 1-4 элементы заполнены. Вы сравниваете его со строкой "true". Оператор сравнения == может вернуть либо true, либо false. В вашем случае массив stepSecond никогда не будет равен строке true. Так что сравнение всегда вернёт false. Значит ваше условие эквивалентно такому: $(false). Функция $ из jQuery создаёт jQuery-объект. Тогда ваше условие превращается в if (jQuery-объект), а значит всегда истинно.

    Вот как можно было бы запрограммировать эту форму: https://jsfiddle.net/isqua/gge88ogL/2/

    Вам нужно получить базовые знания о том, как работает JavaScript. Что такое переменные, функции, каких типов бывают данные и т.п.
    Ответ написан
    Комментировать
  • В чём разница между данными функциями?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    В том, что вторая функция сразу вызывается, а первую надо потом откуда-нибудь вызывать. Второй ваш пример называется Immediately-invoked function expression.
    Ответ написан
    Комментировать
  • Не могу вычислить число фибоначи, есть кто силен в этом вопросе?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    f(2) = f(1) + f(0) = 1. Вот где вы ошиблись. Поэтому

    f(3) = f(2) + f(1) = 1 + 1 = 2;
    f(4) = f(3) + f(2) = 2 + 1 = 3;
    f(5) = f(4) + f(3) = 3 + 2 = 5;
    f(6) = f(5) + f(4) = 5 + 3 = 8;
    f(7) = f(6) + f(5) = 8 + 5 = 13;
    Ответ написан
    Комментировать
  • Как сделать поиск по страницам?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    Добавьте всем страницам класс `page`. А класс `not-match` лучше тогда заменить на `match` и добавлять тем элементам, которые соответствуют поиску. Тогда после поиска у всех подходящих элементов будет класс `match`. Тогда алгоритм нахождения такой:

    1. Берём все страницы (элементы с классом `page`). И идём по ним циклом.
    2. Если у текущей страницы есть внутри элементы с классом `match`, запоминаем её номер и выходим из цикла.
    Ответ написан
  • Как сделать поиск по data атрибутам?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    Лучше разделить представление и логику. Ищите элементы, и на подходящие (или не подходящие) навешивайте класс. А через CSS уже делайте с этим классом что угодно: скрывайте, подсвечивайте, забледняйте.

    Мой пример: codepen.io/isqua/pen/yOXyVP

    Небольшая справка по методам, которые я использую:
    querySelectorAll
    dataset
    classList
    map
    filter
    forEach
    some
    indexOf
    Ответ написан
  • Что делать с блоками которые нужно скрыть для мобильных устройств и отобразить видоизмененными? Как лучше реализовать?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    Советую использовать media queries. В них скрывать то, что не должно быть, и менять вид у блоков.
    Ответ написан
    2 комментария
  • Как интерпретатор понимает куда передать массив?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    // Эта функция принимает функцию f и возвращает другую функцию, которая принимает a
    function mapper(f) {
        return function(a) { return map(a, f); };
    }
    // Объявляем функцию, которая будет f
    var increment = function(x) { return x+1; };
    // Передаем в mapper в качестве f функцию increment.
    // Он возвращает новую функцию, которая принимает a
    var incrementer = mapper(increment);
    incrementer([1,2,3]) // => [2,3,4]


    Почитайте про замыкания.
    Ответ написан
    Комментировать
  • Как урезать свой перфекционизм?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    Чтобы перестать делать лучше то, что ещё не сделано до конца, нужно понять одну простую истину: Запущенный проект лучше, чем не запущенный.

    Давайте потренируемся:
    • Что лучше: запущенный проект с несжатыми стилями или незапущенный со сжатыми?
    • Что лучше: не запущенный проект с десятью страницами или запущенный с тремя?
    • Что лучше: запущенный проект c jQuery или не запущенный без jQuery?


    Надеюсь, вы смогли выбрать! Как узнать, что пора запустить проект? (Под запуском я имею в виду «показать людям». Например, если вы решили написать библиотеку, давайте считать «проект запущенным», если вы выложили её на гитхаб) Нужно прикинуть, сколько времени вам надо на разработку и умножить на два. Если получилось больше двух недель, то стоит разбить проект на части и прикинуть так про каждую часть. Соответственно, ставите дедлайны.

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

    Ну и не беритесь за каждую идею, а выбирайте самые инетересные. Если вы будете делать пять проектов одновременно, скорее всего ни один не доделаете.

    Удачи!
    Ответ написан
    4 комментария
  • Хорошая задача для укрепления знаний и практики в JavaScript?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    Плюсую codewars.com, там интересные задачи на логику, алгоритмы и тонкости языка. Но это всё-таки не продуктовые задачи. Можно их много решать, но так и не научиться делать то, что обычно нужно на работе. Они развивают другое.

    Обычно все пишут туду-приложения, но это уже скучно и затёрто :) Я рекомендую попробовать написать аудиоплеер. Сайт, на котором можно послушать музыку. Можно даже авторизовывать пользователя через last.fm и например рекомендовать ему музыку на основе его предпочтений, или даже сразу включать её (подтягивая треки из вконтакте).
    Ответ написан
    1 комментарий
  • Как сохранять файлы на другой сервер из Node.js приложения?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    Так а на какой именно сервер вы хотите сохранять картинки? Если на какой-то сторонний сервис, то нужно разбираться с его API. Если на соседнюю машину, то можно там поднять простой HTTP-интерфейс для принятия и сохранения файлов.
    Ответ написан
    2 комментария
  • Где можно потренировать навыки JS?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    Уже несколько недель залипаю на codewars.com. Там очень интересные задачи, сложность повышается с ростом вашего уровня.
    Ответ написан
    Комментировать
  • Односвязный список, как добавить элементы?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    В JS объекты копируются по ссылке, а не по значению. Когда вы делаете так:
    var temp = list;
    переменные temp и list ссылаются на один и тот же объект. Поэтому
    list.rest = temp;
    то же самое, что и
    list.rest = list;

    Вероятно, вы хотите получить что-то такое:
    function printList(list){
        var tmp = list;
        while (tmp.rest !== null) {
            console.log(tmp.value);
            tmp = tmp.rest;
        }
    }
    
    var list = {
            value: 1,
            rest: null
        };
    
    for(var i = 0; i < 10; i++){
        temp = { value: i, rest: list };
        list = temp;
    }
        
    printList(list);
    console.log(list);

    Для чего вам такая структура? Не подойдёт обычный массив?
    Ответ написан
    4 комментария
  • Как посчитать сумму чисел в столбце (table td) и вывести её в id c помощью jquery?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    i.reduce(function(prev, curr) {
        return prev + Number(curr)
    }, 0);
    Ответ написан
    Комментировать
  • Не получется сделать скрипт, который проверяет текущую дату на сервере и прибавляет +2 дня к цифре в теге?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    function getDate() {
      var months = [ 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря' ];
      var date = new Date(); // Получаем сегодняшнюю дату
      date.setDate(date.getDate() + 2); // Прибавляем два дня
    
      return date.getDate() + ' ' + months[date.getMonth()];
    }
    
    function setGiftDate() {
      Array.prototype.forEach.call(document.querySelectorAll('.data'), function(elem) {
        elem.innerHTML = giftDate;
      });
    }
    
    setGiftDate(getDate());

    <p>До <span class="data"></span> получите подарок.</p>
    <p>Получите подарок до <span class="data"></span>.</p>
    Ответ написан
    4 комментария
  • Как регуляркой на JS вытащить определённый текст с открытой страницы?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    // Получаем все элементы
    var elements = document.querySelectorAll('.user-panel__user-name');
    // Получаем массив содержимого, каждую строку тримим
    var matches = Array.prototype.map.call(elements, function(username) {
       return username.innerHTML.replace(/^\s+|\s+$/g, '');
    });
    Ответ написан
    Комментировать
  • Как выполненить скрипт при клике, елси не вешать onclick?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    Этот код работает вот как:
    $(function() { // При загрузке документа
      $('.track_download_ova') // Находим элемент с классом track_download_ova
        .click(function() { // Вешаем обработчик клика
          ga('send', 'event', 'Download', 'Sandbox', 'Sandbox Download 0.7.1');
        });
    });

    При загрузке документа такого элемента ещё нет. Поэтому событие и не срабатывает. Используйте, например, делегирование событий в jQuery, чтобы обработать такую ситуацию.

    Альтернативный вариант:
    1. Всем кнопкам, которые открывают форму, в вёрстке прописать одинаковый класс и разные дата-атрибуты, например
    <button class="open-form" data-type='Sandbox', data-name='Sandbox Download 0.7.1'>Я открываю форму</button>
    <button class="open-form" data-type='Debian', data-name='Debian Download 0.7.1'>Я тоже открываю форму</button>

    2. При клике на такую кнопку копировать её дата-атрибуты в дата-атрибуты формы:
    $('.open-form').click(function (event) {
      var $this = $(this),
          $form = $('.download-form');
      $form.data('name', $this.data('name'));
      $form.data('type', $this.data('type'));
    });

    3. При клике на кнопку скачивания/ссылку брать данные из атрибутов формы:
    $('.wpcf7-submit, .not_registration_link').click(function (event) {
      var $form = $('.download-form');
      ga('send', 'event', 'Download', $form.data('type'), $form.data('name'));
    });
    Ответ написан
  • Как правильно указать пути в конфиге?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    По-моему, ведущий слеш не нужен. Либо src/js и test.js, либо ./src/js и ./test.js. Если, конечно, у requirejs стандартные глобы, а не какое-нибудь своё изобретение.
    Ответ написан
    1 комментарий
  • Как сделать поисковые подсказки?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    1. Показывать не все подсказки (и отдавать в браузер), а несколько первых. Например, 10.
    2. Слать запрос на сервер с небольшой задержкой, примерно 0,3с. То есть пользователь не пишет ничего 0,3с — пора идти за подсказками на сервер.
    3. Если пользователь стал дальше вводить, а ответ с сервера ещё не пришёл, абортнуть запрос. Если пользователь снова не вводит ничего 0,3с — снова сходить за подсказками.
    Ответ написан
    Комментировать
  • Каким должно быть регулярное выражение?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    Не хотите попробовать уже готовое решение для подсветки кода, например, Highlight.js?
    Ответ написан
    Комментировать