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

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Я так понимаю, дело под Windows происходит? Попробуйте перед запуском из командной строки сначала выполнить set NODE_OPTIONS=--openssl-legacy-provider. Это включит поддержку устаревших хеш-функций, из-за отсутствия которых, по всей видимости, проект и не работает.
    Ответ написан
    Комментировать
  • Как мне сделать валидацию этой формы?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Это называется «угадайте, plugin для чего имел в виду автор».
    По существу — без всяких plugins помогут HTML-атрибуты pattern и required. В pattern нужно прописать регулярное выражение для проверки. А чтобы менять класс формы, нужно навесить на inputы обработчики события invalid. То есть получится что-то вроде:
    <input class="g-input modal-form__input" data-validate-field="tel" type="tel" name="Телефон" placeholder="Ваш телефон" inputmode="text" required pattern="+[0-9]{10,12}" oninvalid="this.form.classList.add('error-class')">
    Ответ написан
    Комментировать
  • Access to fetch has been blocked by CORS policy, ошибка в запросе или в сервере?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Сервер должен выдавать заголовок Access-Control-Allow-Origin, где указывать, с каких сайтов к нему можно обращаться с помощью fetch. У тестовых API, скорее всего, выдаётся Access-Control-Allow-Origin: *, поэтому на них всё и работает.
    Ответ написан
  • Как можно автоматизировать выбор размера?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Подозреваю, что дело не в этом, а в том, что что-то на странице не успевает догрузиться к моменту, когда этот код срабатывает. Имеет смысл попробовать добавить задержку при загрузке:
    setTimeout(function () {
    $("li:contains('36 RU / 4 UK')").trigger( "click" );
    },3000);
    Ответ написан
    Комментировать
  • Какой самый компактный способ проверить поле крестики-нолики?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Для классических крестиков-ноликов 3x3, на мой взгляд, проще всего сделать так: хранить выставленные на поле на поле крестики и нолики в одномерном массиве. А для проверки сделать массив для проверки выигрышных комбинаций, где перечислить смещения в основном массиве. И дальше — сделать цикл для проверки.
    То есть получаем вот что:
    var game_field=[' ',' ',' ',
    ' ',' ',' ',
    ' ',' ',' '];
    var wins = [[0,1,2],[3,4,5],[6,7,8],[0,4,8],[2,4,6],[0,3,6],[1,4,7],[2,5,8]];
    
    function check_game_over() {
      for (i=0; i<wins.length; i++) { // перебираем все выигрышные комбинации
        var game_over=true;
        if (game_field[wins[i][0]]!=' ') { // если первая из проверяемых клеток не пуста, начинаем проверку
          for (j=1; j<wins[i].length; j++) { // начинаем с единицы, так как сравнивать первую выигрышную клетку с собой не имеет смысла
            if (game_field[wins[i][0]!=game_field[wins[i][j]]) { // если значение в текущей клетке проверяемой комбинации отличается от первой, комбинация не выигрышная, выходим из вложенного цикла
              game_over=false;
              break;
            }
          }
          if (game_over) return game_field[wins[i][0]]; // возвращаем выигравшую сторону — крестик или нолик
        }
      }
      return false;
    }
    Ответ написан
  • Как сократить js код?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Зачем нужны конструкции вида var a=a и зачем текущее время сначала присваивать в x, а потом переносить в now_time? Можно сразу в now_time поместить.
    Еще можно объединить условия: c>0 && a>0 && b>0
    Также можно применить такую вещь как замыкание (closure), если знаете, как его делать, хотя особого сокращения оно тут не даст.
    А setInerval можно вызывать в обычном цикле for:
    <?php for ($i=0; $i<5; $i++) echo 'setInterval(calc_sum,1000,"'.$cfg['pf'.$i].'",".$usdat['fa'.$i].'","'.$usdat['sbor'].'",24,"'.$i.'");'; ?>
    Ответ написан
    Комментировать
  • Как сделать плавающий блок замирающий под header?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Навесить обработчик на событие onscroll и смотреть, насколько прокрутилась страница от начала. Т.е. будет что-то вроде такого:
    jQuery('body').on('scroll',function (e) {
      if (jQuery('body').scrollTop()>500) { // вместо 500 поставить отступ среднего блока от верха страницы
        jQuery('.midblock').addClass('fixedblock');
      }
      else {
       jQuery('.midblock').removeClass('fixedblock');
      }
    });

    Тут предполагается, что у среднего блока постоянно прописан класс midblock, а когда он переходит в состояние fixed, то добавляется класс fixedblock, в котором прописаны position:fixed и отступ сверху.
    Ответ написан
  • Как лучше реализовать хранение данных в БД? Какой стек технологий выбрать?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    А зачем такое делать на NoSQL? Тут реляционные базы вполне подходят.
    Я бы вообще ограничился тремя таблицами:
    1) сайт
    2) товар вообще (по сути, там хранится только его id и наименование)
    3) товар на конкретном сайте (тут хранится id товара, id сайта, цена, дата парсинга).
    Ответ написан
    7 комментариев
  • Удаление конкретного элемента на jQuery?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Нужно прописывать для каждого tr свой id и удалять по нему.
    Т.е. что-то вроде
    $('table').append('x');
    И потом удалять по селектору #del_номер.
    Другой вариант — сразу при создании tr вешать на него событие click и удалять по нему:
    $('.add_to_this').append(function() {
      return $(''<tr class="del"><td><input type="text" name="name'+i+'" placeholder="название"/></td><td><input type="text" name="simbol'+i+'" placeholder="значение"/></td><td><button>x</button></td></tr>'').click(
      function() {
        $(this).remove();
      });
    });
    Ответ написан
  • Как загнать в переменную содержимое файла?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Без кода функции getmyvariable сложно сказать что-то определенное. Но могу предложить сделать console.log(myvariable) перед myvariable.send, а также внутри функции-обработчика onreadystatechange (еще до проверки первого условия), тогда будет проще понять, где проблема.
    Ответ написан
    Комментировать
  • Как сохранить файл из инпута на сервер?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Через AJAX такое не получится. Придется делать однопиксельный iframe и ставить его в качестве target для формы.
    Или воспользоваться готовым plugin, например, jQuery File Uploader.
    Ответ написан
    Комментировать
  • Не могу написать скрипт, обрабатывающий нажатие Enter и нажатие button в форме.?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Есть два варианта: либо ловить событие keyup, и проверять, что код нажатой клавиши равен 13 (он хранится в event.which) , и по нему реагировать.
    Либо сделать, как порекомендовал Михаил Захаров, но на input менять ничего не надо, можно для тега button прописать type="submit" вместо type="button", и она будет вызывать отправку формы.
    Второй вариант в целом проще в реализации, и более красив и логичен.
    Ответ написан
    Комментировать
  • Многократная вставка в editor, без замены содержимого?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    В CodeMiror есть функция ReplaceSelection, но если в редакторе ничего не выделено, то она работает как вставка.
    Ответ написан
    1 комментарий
  • Как задать enable/disable для input text при помощи радиобаттона?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Можно обойтись без JavaScript: воспользоваться псевдоклассом :checked и возможностью указывать следующий тег через +,
    То есть если имеем код
    <input type=checkbox id="other" value="other" /><label for="other">Другое</label>
    <div><input type="text" name="other_value"/></div>

    то можно прописать такой CSS:
    #other+label+div { display: none }
    #other:checked+label+div { display: block }
    Ответ написан
    1 комментарий
  • Как лучше организовать построение карт с более 1000 точек?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Использовать БД, которая поддерживает spatial-типы данных (например, PostgresSQL), сделать по ним индексы и подгружать AJAXом только те точки, которые находятся в текущей области видимости.
    Ответ написан
  • Что значит этот код?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Судя по всему, книгу распознавали с помощью OCR, и символ кавычек " заменился на цифру 1.
    Реально должно быть вот что:
    var linkVar = {message: "Привет от ссылки"};
    var pVar = {message: "Привет от абзаца"};
    function showMessage(evt) {
    alert(evt.data.message);
    }
    $("a").on("mouseover", linkVar, showMessage);
    $("p").on("click", pVar, showMessage);

    А происходит тут вот что: объявляется две переменных (представляющих собой хеш из одного элемента), потом объявляется функция, вызов которой с помощью jQuery-метода on вешается на обработчик события onmouseover для ссылки и onclick щелчка для тега p (абзаца). Причем метод on еще создает замыкание,которое связывает функцию обработчик с определенной переменной.
    Ответ написан
    Комментировать
  • Как реализовать имитацию 3 кликов после нажатия на кнопку?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Можно попробовать так:
    $('#button-main').click(function(){
      $('#button-1').trigger("click");
      $('#button-2').trigger("click");
      $('#button-3').trigger("click");
    });

    Если не поможет, то разбираться с объектом event. Будет что-то примерно такое:
    var event = document.createEvent("MouseEvents");
            event.initEvent("click", true, true); 
            event.synthetic = true; 
            document.getElementById('button-1').dispatchEvent(event, true);
    Ответ написан
    7 комментариев
  • Почему getElementsByClassName не работает?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    В JavaScript регистр букв в именах методов является значимым. Правильно писать document.getElementsByClassName.
    Ответ написан
  • Как связать javascript и php?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Если совсем на пальцах, то нужно при нажатии пользователем на кнопку Like нужно сделать отправку на сервер AJAX-запроса, где в конец будет добавлено ?id=номер_поста. Взять его можно либо из URL (распарсив document.location.href), либо заранее вставлять в страницу при генерации на стороне сервера (т.е. будет что-то вроде ).
    Ответ написан
    Комментировать
  • Вывод данных json через post?

    XXXXPro
    @XXXXPro
    Fullstack Web developer
    Не очень понял вопрос: предполагается ли обновление страницы или нет. Если нет, то в таком виде: <a href="#post-123">, после чего содержимое поста выводится с помощью JavaScript. Если да, то ссылка такого вида <a href="onepost.html?id=123">
    Ответ написан