Ответы пользователя по тегу JavaScript
  • Почему объекты по-разному сравниваются?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    Потому что объекты сравниваются по ссылкам, если две ссылки ведут на один и тот же объект, то получаете true, иначе - false. Чтоб в первом и втором случае было true надо серьезно переработать код, так как он возвращает {...} каждый вызов функции создает новый объект, и возвращает. Использование this внутри функций A и B не оправдано, создает мусор. При сравнении >= js пытается привести оба операнда к числу, и если память не изменяет, сначала ищет метод toValueOf, а если его нет - приводит к строкам, с помощью метода toString, в Вашем случае есть метод toString, и так как объекты с одинаковыми значениями полей age >= дает true, так как из объектов вызывается неявно toString.
    Ответ написан
    Комментировать
  • Как отправить POST запрос по ссылке?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    Вместо ссылки делаете форму, метод POST, и кнопку отправки.
    Ответ написан
    Комментировать
  • Как создать такую маску на JS?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    Ответ написан
    Комментировать
  • Почему не работает код с циклом forEach?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    Array.prototype.forEach.call(images, function(el, ind, arr){
        //....
    });

    Вот так пропишите.
    Ответ написан
    Комментировать
  • Как обойти проблему кавычек внутри кавычек?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    \
    Ответ написан
    Комментировать
  • Как повернуть картинку, горизонтально JavaScript, Canvas?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    css transform rotate
    Ответ написан
    Комментировать
  • Как можно это переписать на XHR с поддержкой IE?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    function myFetch(params){
        return new Promise(function(resolve, reject){
           const xhr = new XMLHttpRequest();
            xhr.open(params.method, params.url, true);
            xhr.send();
            xhr.addEventListener('readystatechange', function(e){
                  if( xhr.readyState != 4  ) return;
                  if( xhr.status == 200 ){
                       resolve( xhr.responseText );
                   } else{ reject( xhr.statusText ); }
            });
    }
    myFetch(//parameters...).then(//...... код который у Вас в then).
    Ответ написан
    Комментировать
  • Как наладить поддержку fetch в internet explorer?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    function myFetch(params){
        return new Promise(function(resolve, reject){
           const xhr = new XMLHttpRequest();
            xhr.open(params.method, params.url, true);
            xhr.send();
            xhr.addEventListener('readystatechange', function(e){
                  if( xhr.readyState != 4  ) return;
                  if( xhr.status == 200 ){
                       resolve( xhr.responseText );
                   } else{ reject( xhr.statusText ); }
            });
    }
    myFetch(//parameters...).then(//...... код который у Вас в then).
    Ответ написан
    Комментировать
  • Как можно использовать querySelectorAll вместе с replace?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    Хорошо, объясню.
    const inputNumbers = document.querySelectorAll('input');

    Получает список инпутов, далее надо их все перебрать, для этого нужно организовать, например, цикл. У каждого инпута много есть свойств и методов, так как это объект DOM, и чтобы получить введенные данные надо обратиться к свойству value. В результате получим строку, где будет введенные данные. Теперь можно работать с этими данными и применять к ним replace. Но, данные в инпуте от этого не изменяться. То, что вернет метод replace надо присвоить в этот самый инпут, из которого он был взят.
    Остается одно НО! Если написать код как я объяснил, но в таком виде, как у Вас, то инпуты очистятся ровно один раз, при вызове функции. Чтобы код работал всегда, когда человек что-то вводит в инпут нужно повесить на инпуты обработку событий: change - человек сможет ввести, что угодно, но как только он уберет фокус с поля ввода отработает функция и все ненужное вырежет; input - функция будет вырезать как только человек что-то будет вводить, при каждом вводе, на каждом символе тут же будет вырезать. Как по мне второй вариант самое то. При таком раскладе, можно просто функцию-обработчик повесить на инпуты, и внутри нее работать с target события и без цикла. Правда циклом надо пройтись, чтобы повесить обработку событий на все инпуты.
    Ответ написан
  • Кто разрабатывает Javascript (ECMAscript)?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    Ищите в гугле: TC-39.
    Далеко не один человек двигает стандарты.
    Вот целый доклад: Сергей Рубанов.
    ПС: не заметил сразу, что автозамена сделала из моего ответа) Поправил)
    Ответ написан
    8 комментариев
  • Почему при клике обработчик не срабатывает?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    Заходит такой Java Script в пустой DOM, а ему говорит начальник-программист:
    - Найди элемент по id, и пусть при клике он что-то делает!
    А Java Script отвечает:
    - Что-то такой элемент не иначе, как undefined!
    И ничего не делает...
    Ответ написан
    Комментировать
  • Как использовать свойства объекта внутри него же?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    Вариант выше - вариант.
    Еще можно создать функцию-конструктор, или класс, которая создаст объект по нужным параметрам.
    Ответ написан
    Комментировать
  • Как выяснить какой скрипт блокирует действие на странице?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    Открываете devtools, ищете в разметке блок, по которому надо кликать, где клик не работает. Далее переходите во вкладку event listeners, и смотрите все listeners, где они находятся и какой код выполняют.
    Также берете какой-то код прослушки события, ставите на нем breakpoint во вкладке source, и перезагружаете страницу. Кликаете на блок и с помощью стрелок в вкладке source двигаетесь по коду, пока не найдете, что мешает.5d504973756e8539598521.png
    Ответ написан
    Комментировать
  • Как сделать автовоспроизведение YouTube видео на смартфонах?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    Как я рад, что не работает! Желаю, чтоб так и дальше было. Не нужен мне автоплей тем более на смартфоне, где каждый килобайт трафика стоит моих денег. Тем более, когда Вы пишете, что у Вас слайдер с разными видео и хотите их на автоплей. Не переходите на сторону зла.
    Ответ написан
    3 комментария
  • Почему не работает счётчик JS?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    Я нигде не вижу, чтобы i как-то менялась.. Нигде к ней нет ни + 1, ни -1 ни чего-то еще, вижу только car++, но это не i.
    Ответ написан
    Комментировать
  • Добавление инпута через js?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    Если на стороне сервера формируете тег скрипт, и хотите, чтобы он добавил инпут когда на клиент придет, то:
    1. var inp = '' - это просто строка, надо бы заставить js из нее сделать объект DOM, можно это сделать так - $(inp), получим объект DOM в обертке jq; или $('#form').html( inp ); - тогда строка Вашей разметки будет встроена в DOM как просто строка и после этого уже будет добавлена в DOM как надо.
    2. Скрипт рискует запуститься до того, как будет построен DOM, так что оберните его еще в window.onload, только желательно через addEventListener.
    PS: если на стороне сервера формируете форму, зачем эти танцы с js? Не проще просто echo '<input ....'?
    Ответ написан
  • Как сгенерировать случайное число, содержащее две единицы?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    Александр, Вы подписались, что PHP разработчик, напишите функцию на php, а мы поможем на js перевести. Тут уже написали 100500 вариантов, но все же, вопрос и бесплатный заказ разные вещи. Функция ну просто простая... неужели совсем нет идей как сделать? Напишите в вопросе алгоритм, как Вы его видите, тогда есть смысл помогать с кодом, где Вам не достает знаний js.
    Ответ написан
    Комментировать
  • Как заменить текст в div при нажатии на него?

    dimovich85
    @dimovich85 Куратор тега CSS
    https://u-academy.net/
    Очень просто. А почему для разметки используете div, когда есть button?
    Есть идеи, как это реализовать?
    Например, надо получить div, потом добавить обработку клика, по клику проверять значение текста в div'e, и менять его.
    Чтобы получить div есть querySelector из объекта document. Для обработки клика есть addEventListener из объекта DOM, а для значения теста внутри из объекта DOM есть свойство innerText.
    Ответ написан
    Комментировать
  • Как получить объект родителя?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    Создаете рекурсивную функцию, которая проверяет, есть ли у объекта, который пришел на вход, как параметр при вызове, свойство parentid, если есть - рекурсивный вызов, если нет - просто возврат или пуш в массив, смотря, что нужно.
    Ответ написан
    Комментировать