Ответы пользователя по тегу JavaScript
  • Как заблокировать возможность делать скриншоты на моем сайте или хотя бы по нажатию на PrtScn возвращать серую картинку вместо изображение сайта?

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

    @alexalexes
    А что вы так за математику зацепились?
    Перед вами барьер в виде понимания стека технологий - как взаимодействует клиент и сервер. Математики там примерно на 2+2.
    Это вам чтобы в вуз поступить математика нужна. Чтобы на одной из базисных дисциплин вы научились брать интегралы - чисто джентельменский навык как фехтование шпагой, а на другой, уже профильной дисциплине вам расскажут про стек технологий, чтобы получить полностью работающий сайт.
    Ответ написан
    Комментировать
  • Как добавить сумму полей только один раз при клике?

    @alexalexes
    numberStudentsPrice.innerHTML = +numberStudentsPrice.innerHTML + +numberStudentsPriceWeekend.innerHTML;

    Наверное, нужно где-то хранить исходное значение numberStudentsPrice, которое не будет зависеть от погоды. И от этого значения считать и будничный день, и выходной, не затирая исходный коэффициент.
    А так, вы инкриминируете numberStudentsPrice на шаг numberStudentsPriceWeekend при каждом выборе выходного.
    Ответ написан
  • Ошибка при JSON.parse как исправить?

    @alexalexes
    Можно сделать из буханки хлеба троллейбус, но зачем?
    var dataJSONArray = JSON.parse('<?php echo str_replace( "\'", "\\'",json_encode($u,JSON_UNESCAPED_UNICODE)); ?>');
    Ответ написан
    Комментировать
  • Как сделать таймер отсчёта как на фото?

    @alexalexes
    Нужно менять механику смещения параметра в translate3d, чтобы смещение по вертикали анимировалось между (n/2) и (n/2) + 1 высотой списка (перелистывались соседние элементы центральной части списка). Когда анимация достигнет уровня (n/2) + 1, нужно сделать два одновременных действия: 1 - переставить последний элемент списка на первое место, 2 - вернуть уровень до отметки (n/2). Тогда будет достигнут эффект замкнутости и цикличности списка и анимация не будет откатываться назад.
    Ответ написан
    1 комментарий
  • Как добавить исключение?

    @alexalexes
    Отфильтруйте по списку исключений:
    let except_id_list = ['111111', '222222', '333333'];
    let items = [...document.querySelectorAll(`div[class="name"]`)].filter(item => except_id_list.indexOf(item.id) == -1);
    ...
    Ответ написан
    3 комментария
  • Почему не удаляется класс по setTimeout?

    @alexalexes
    Еще в добавок к ответу Алексей Уколов могу сказать, что можно выстрелить себе в ногу this или item параметром при итерации foreach какой-нибудь коллекции.
    Решается такой конструкцией передачи параметра:
    setTimeout((function(this_is_this)
    {
       retrun function()
       {
            $(this_is_this).removeClass("hG8KlY3Q");
        }
    })(this), 1000);

    Здесь используется анонимная функция function(this_is_this), которая превращает контекст this просто в локальный параметр, который передается через замыкание во вложенную функцию.
    Ответ написан
  • Как пошагово работает сортировка .sort()?

    @alexalexes
    Вам не нужно знать как работает функция sort, вам нужно дать этой функции метод как "взвесить" любые два элемента списка, как оценить свойства или значение самого элемента, чтобы понять, какой из них должен идти впереди какого. Результат метода должен быть 1, 0 или -1.
    Если 1, то A тяжелее B.
    Если -1, то А легче B.
    Если 0 - то элементы эквивалентны.
    function(a,b)
    {
      if(/*условие на A тяжелее B*/) // чашка A ниже чашки B на рычажных весах 
        return 1;
     else if(/*условие на A легче B*/) // чашка A выше чашки B на рычажных весах 
        return -1;
      else
      return 0; //иначе - эквиваленты, весы уравновешены
     // если условия на тяжесть и легкость поменять местами, то поменяется направление сортировки
    }
    Ответ написан
    4 комментария
  • Как получить значение select после загрузки страницы?

    @alexalexes
    $(document).ready(function() {
            $('#country-list').on('change', 'select', function(){
                console.log($('#country-list').val());
            });
        });

    Этот код просто вешает обработчик на событие изменения селекта. Вывод в консоль произойдет после поджига события change.
    Ответ написан
  • Как перезаписать файл 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 комментария