Ответы пользователя по тегу JavaScript
  • Как перезаписать файл JSON в js?

    @alexalexes
    Если это NodeJS сервер, то:
    1. Открыть и прочитать файл.
    2. Отдекодить содержимое из JSON в объект.
    3. Внести изменения в объект.
    4. Заинкодить объект в JSON.
    5. Записать JSON в файл.

    Если браузерный JS, то браузерный не работает с файлами, он может получать и отправлять JSON только серверу. Но принцип преобразования будет тот же самый, за исключением пунктов 1 - получить JSON от сервера, 5 - отправить JSON на сервер.
    Ответ написан
    Комментировать
  • Как добавить в цикл +время?

    @alexalexes
    Вам еще рано с шаблонами работать. Нужно научиться итерировать/трассировать циклы.
    if ( have_rows('whereblocks', $id) ) { // если найдены данные
    // тут объявить переменную i = 5
                   while ( have_rows('whereblocks', $id) ) { the_row();?>
           ....
                        data-wow-delay="<? /*тут вывести текущее i*/ ?>s">
            ....
      // тут прибавить к i 5
    } // конец цикла while
    } // конец if
    Ответ написан
    1 комментарий
  • Как получить соседние элементы?

    @alexalexes
    Если убрать синтаксический сахар, то получим такой код.
    // [...e.parentNode.children] -- преобразуем коллекцию узлов children в массив
    let child_count = e.parentNode.children.length;
    let child_arr = [];
    for(let i = 0; i < child_count; i++)
      child_arr.push(e.parentNode.children[i]);
    
    // .filter((child) => child !== e) -- фильтруем детей, которые не относятся к текущему узлу
    
    let filter_child_arr = [];
    for(let i = 0; i < child_count; i++)
    {
      let curr_child = e.parentNode.children[i];
      if(curr_child !== e)
        filter_child_arr.push(curr_child);
    }
    Ответ написан
    Комментировать
  • Как сделать, чтобы сайт закрывался или становилась белая страница при открытии консоли?

    @alexalexes
    Никак. Любая составляющая сайта, переданная на сторону клиента, может использоваться и изучаться клиентом как угодно и какими угодно инструментами (кто сказал, что на другой стороне будет браузер?), как в полезном ключе, так и в зловредном.
    Краеугольным вопросом безопасности вашего ресурса является не противодействие анализу той части, которая получает клиент, а сделать так, чтобы серверная часть не реагировала на запросы, которые не соответствуют бизнес-логике клиентской части (или считала ошибкой, выводя соответствующее сообщение).
    На стороне сервера нужно проверять валидность данных, получаемых от клиента, как по правам доступа (имеет ли право клиент совершать определенное действие), так и по содержанию (данные, приводящие к изменениям, не будут ли приводить к противоречивому состоянию базы?).
    Ответ написан
    1 комментарий
  • Как сделать слайдер со сменяющимся текстом внутри?

    @alexalexes
    Учить основы CSS - с чем едят свойство position.
    В данном случае для вас неожиданностью является поведение свойства position: absolute; у контейнера .header__slider-text.
    Чтобы абсолютное позиционирование было относительно слайда, дайте контейнеру слайда .header__slider-item свойство position: relative;
    Ответ написан
  • Код из файла *.js выполняется после формирования DOM?

    @alexalexes
    Порядок парсинга скрипта зависит от того, какой атрибут укажите у тега script. По умолчанию, парсинг начинается в синхронном режиме, как только загрузится закрывающуюся скобка } у лексически значимой корневой конструкции (функция, класс и т.д.), или просто встретится вызов функции.
    Ответ написан
    Комментировать
  • Можно ли использовать две переменные в switch case?

    @alexalexes
    У true программистов всегда было много вопросов к switch (как в свое время к go to). Поэтому в любой непонятной ситуации используйте цепочку if else, так вы будите ближе к строгим стандартам.
    if(a > b) {
      alert(a + b)
    } else if(a < b) {
        alert('Lorem Ipsum terebismum')
    } else {
        alert('Isn"nt number')
    }
    Ответ написан
    Комментировать
  • Как сделать валидацию на нескольких инпутах, и не зависимые от модально окна?

    @alexalexes
    Чешите валидацию не по всему документу, а по форме.
    Параметр формы у вас передается внутрь функции.
    Было:
    let formReq = document.querySelectorAll('._req');
    Должно:
    let formReq = form.querySelectorAll('._req');
    Ответ написан
    1 комментарий
  • Не работает slick слайдер после того, как отображаю слайды с помощью JS с подгрузкой json данных?

    @alexalexes
    Как foreach-ем обходили контейнеры, чтобы инициализировать каждый слайдер:
    $(какой-то селектор элемента или нода).slick(какие-то свойства инициализации);

    Таким же путем нужно пробежаться по всем слайдерам и дать им команду обновить свое состояние (refresh) после того, как отработает функция renderProducts.

    $('.slider__body').each(function () {
      $('.slider', $(this)).slick('refresh')
      $('.slick__thumbs', $(this)).slick('refresh')
    })
    Ответ написан
  • Как отрисовать страницу при асинхронном POST запросе?

    @alexalexes
    Если у вас строго режим одностраничного сайта, то да, сами перелицовываете body в любой непонятной ситуации (на самом деле для такой модели подбирают подходящий клиентский фреймворк. сами вы вряд ли охватите все обработчики событий, чтобы не заботится об реактивности блоков всей страницы). При этом нужно не забывать вести url history, чтобы адрес страницы фиктивно изменялся, следуя логике посещения виртуально нарисованных разделов сайта.
    Или же у вас не строго одностраничный сайт, то...
    Если у вас только некоторые контейнеры на странице обновляют сведения по ajax, то на какие-то действия нужно вызывать перезагрузку страницы, изменяя windows.location.href / windows.location.reload.
    Ответ написан
    Комментировать
  • Как сделать динамичное извлечение из JSON?

    @alexalexes
    Перевести в массив объект -> если есть элементы, то ... отмапать элементы с нужным дополнением li -> объединить массив с пустым разделителем.
    `<div class="store__text">` + (Object.entries(item.desc[0]).length > 0 ? `<ul>` +Object.entries(item.desc[0]).map((desc_item) => `<li>` + desc_item[1] + `</li>`).join(``) + `</ul>` : ``)
          + `</div>`
    Ответ написан
    3 комментария
  • Сделать валидацию формы это задача для джуна или мидла?

    @alexalexes
    Человек, который пришел с улицы в программирование и взялся разрабатывать форму, должен первым делом понимать, как проверять пользовательские данные хотя бы на корректную длину (минимальную и максимальную), если вводится произвольный текст; на вхождение в список допустимых значений, если что-то выбирается из выпадающего списка или радиокнопок. Учитывать опциональность вводимого поля (обязательное для заполнения или нет). Проверять тип данных - число или строка. Если еще знает, как проверить на формальную корректность поле адреса электронной почты - вообще, супер.
    Ответ написан
    Комментировать
  • Как работать напрямую с базами данных из клиента?

    @alexalexes
    Возможно, если сама СУБД будет давать необходимый API для веб клиентов (который не будет работать из коробки, нужны определенные действия по настройке со стороны администратора СУБД).
    Яркий пример - Oracle REST Data Services.
    Но не каждый производитель СУБД заморачивается над разработкой подобных сервисов. Главное, чтобы самые популярные среды разработки серверных приложений имели необходимое расширение или драйвер, чтобы подключаться к СУБД на стороне сервера. Остальное - головная боль прикладных разработчиков.
    Ответ написан
    Комментировать
  • Как сделать табы с выводом из бд?

    @alexalexes
    Выводить также как из любого другого источника данных.
    1. Подготовьте источник данных.
    - Разверните службу СУБД в операционной системе сервера.
    - Выберите менеджер, чем вам будет удобно просматривать объекты СУБД.
    - Установите менеджер СУБД.
    - При помощи менеджера СУБД заведите пользователя базы данных, схему базы данных, структуру таблиц и связей, вставьте необходимые данные.
    2. Изучите способы подключения к источнику данных и взаимодействия из PHP (как делать коннект к СУБД, как подготавливать запросы и параметры к ним, как фетчить результат выборки запроса).
    3. Подключитесь к базе, выполните запрос, встройте выборку результата в ваш шаблон HTML (табы).
    Ответ написан
    3 комментария
  • Как сделать так, чтобы элемент можно было тащить влево-вправо?

    @alexalexes
    1. На десктопе рулят события мыши: mousedown - эквивалент touchstart, mousemove - эквивалент touchmove, mouseup - эквивалент touchend.
    2. Вместо множества точек касаний (пальцы) у вас одна точка - курсор мыши, поэтому свойства changedTouches в объекте события не будет.
    3. Тестировать, что окружение браузера имеет сенсорный экран, можно проверкой наличием доступного свойства любого события touch в window:
    if("touchstart" in window)
    {
      // работаем с сенсорными обработчиками
    }
    else
    {
      // работаем с мышиными обработчиками
    }

    4. Событие завершения управления элементом (touchend, mouseup) лучше вешать не на сам элемент item, а на его контейнер, который будет занимать всю ширину экрана (идеально, если это будет body). Логика обработки может застрять на обработчике move, если во время движения точка воздействия на объект убежит за пределы объекта.
    В определенных случаях могут выручить события mouseover/mouseout.
    Ответ написан
    Комментировать
  • С помощью чего сделан эффект как на сайте https://www.fromscout.com/?

    @alexalexes
    Анимация по ключевым кадрам.
    animation: main-logo-texture 10s linear infinite;
    Ключевые кадры:
    @keyframes main-logo-texture {
        0% {
            transform: translate(0)
        }
    
        to {
            transform: translate(-99px)
        }
    }
    Ответ написан
    3 комментария
  • Как кликнуть по элементу у которого один Class но элементов таких 10?

    @alexalexes
    Если не хотите forEach-ем, то переберите по старинке через for.
    let Nlist = document.querySelectorAll(".chain_cnt_head");
    for(let i = 0; i < Nlist.length; i++)
    {
       Nlist[i].click();
    }
    Ответ написан
    1 комментарий
  • Как правильно заменить текст в html?

    @alexalexes
    Функция ViewGifImage не нативная, а скорее всего ее реализация прописана в какой-то подключаемой библиотеке JS.
    Нужно погуглить спецификацию этой библиотеки, и посмотреть в доках, за что отвечает параметры в функции ViewGifImage.
    Если я предположу (я не знаю, что за библиотека и не видел ее документации!), что первый параметр отвечает за указатель на html узел, куда вывалить бинарный ресурс изображения, то нужно как-то обозначить теги, чтобы указатели на эти теги выцепить из DOM через JS. Например, я хочу им задать уникальные идентификаторы:
    <img id="image-1234" src="/какой-то путь/qa_2023-02-01-212831-1.gif">
    <img id="image-5678" src="/какой-то путь/qa_2023-02-01-212831-2.gif">

    Тогда из DOM я буду доставать указатели на эти элементы через функцию getElementById.
    <script type="text/javascript">
    let image_1234 = document.getElementById("image-1234"); // тут получаем ссылку на элемент с id="image-1234"
    // далее, используем ее вместо this
    ViewGifImage(image_1234, 'sitedb/log/QA/General/SfpBCTuningCheck/gfx/qa_2023-02-01-212831-1.gif','sitedb/log/QA/General/SfpBCTuningCheck/gfx/qa_2023-02-01-212831-1.pix','322','242','ReflectionResultPlot','Frequency in MHz','0','Reflection Factor |r|','0','1','xffffff x000000 x000000 xff0000 x0000ff x00df00 xff00ff xff7f00','2','158','1','Reflection 0 Degrees','158','1','Reflection 90 Degrees','','','','','','','','','');
    
    let image_5678 = document.getElementById("image-5678"); // тут получаем ссылку на элемент с id="image-5678"
    // далее, используем ее вместо this
    ViewGifImage(image_5678, 'sitedb/log/QA/General/SfpBCTuningCheck/gfx/qa_2023-02-01-212831-2.gif','sitedb/log/QA/General/SfpBCTuningCheck/gfx/qa_2023-02-01-212831-2.pix','322','242','TransmissionResultPlot','Frequency in MHz','0','Transmission |t| in db','0','1','xffffff x000000 x000000 xff0000 x0000ff x00df00 xff00ff xff7f00','2','158','1','Transmission 0 Degrees','158','1','Transmission 90 Degrees','','','','','','','','','')
    </script>
    Ответ написан
  • Странное поведение document.write()?

    @alexalexes
    Для записи многострочного текста в качестве параметра или переменной в JS нужно использовать обратные кавычки.
    // Как у вас:
    let a = 'Много
    строчный
    текст';
    // как корректно
    let a = `Много
    строчный
    текст`;
    // как выкрутиться, если у вас не ES6
    var a = "Много\
    строчный\
    текст";
    Ответ написан
  • Браузер блокирует скачиваение с сайта нескольких файлов подряд. Как предупредить пользователей?

    @alexalexes
    Если следовать логике загрузки файлов из github (получить весь репозиторий) или любого файлового облака (получить весь каталог с файлами), то когда речь заходит о скачивании набора файлов, то этот набор лучше упаковать в архив и отдать клиенту отдельным файлом. Тогда вы не столкнетесь с ограничениями браузера.
    Ответ написан
    2 комментария