Задать вопрос
Ответы пользователя по тегу JavaScript
  • Как вставить скрипт, чтоб он не открывался на всю страницу?

    @alexalexes
    Либо обращайтесь к разработчикам виджета - help@unitiki.com
    Либо смотрите, какие ccs-селекторы воздействуют на модальное окно виджета и пытайтесь перебить их свойства своими css-стилями.
    Ответ написан
    Комментировать
  • Не видит значение input, как исправить?

    @alexalexes
    Вам нужно получить значение текстового поля так:
    var intxt = document.querySelector('input').value;
    Как раз это и будет строка, у которой можно посмотреть length.
    Ответ написан
    Комментировать
  • Выбор меню. Оставить фокус при загразки другой html?

    @alexalexes
    Вариант 1, решение на коленке, которое нужно здесь и сейчас.
    Написать костыль на JS в виде функции, которая возьмет подстроку из текущего url и произведет поиск нужной ссылки в меню с таким же href атрибутом, и поставит найденному html элементу класс активного элемента (или контейнеру ссылки - li элементу). Не забудьте прогуляться до первого уровня меню и тоже расставить классы активного элемента, если у вас меню многоуровневое.

    Вариант 2, как должно быть.
    У вас во входном скрипте index.php должен быть реализован примитивный роутинг url.
    Благодаря роутеру для каждой страницы вы точно можете получить путь из компонентов адреса.
    Например, site.com/page1/subpage2.
    От роутера вы легко можете получить путь к странице, хотя бы в таком виде:
    $page_path = ['page1', 'subpage2'];
    Также меню должно формироваться динамически, из какой-то сохраненной структуры, пусть структура будет статичной.

    $site_menu =
    [
       'page1' =>
       [
          'title' => 'Страница 1', 
          'child' => 
          [
             'subpage2' => ['title' => 'Субстраница 2', 'child' => []]
          ]
      ],
      'page2' =>
       [
          'title' => 'Страница 2', 
          'child' => []
      ],
    ];

    Примерная функция для формирования меню:
    // рекурсивная функция для получения сверстанного меню из структуры
    function get_main_menu(
       $curr_menu, //часть меню текущего уровня
       $level, // номер текущего уровня
       $menu_path, // путь к текущему уровню меню
       &$page_path // путь к текущей странице 
    )
    {  
      $out = '';
      if(count($curr_menu) > 0)
      {
        $out .= '<ul class="main-menu main-menu_level-'.$level.'">';
        foreach($curr_menu as $key_item => $menu_item)
        {
            $out .= '<li class="main-menu__item '
                     .($page_path[$level] == $key_item ? 'main-menu__curent' : '') // определяем текущий пункт меню
                   .'"><a href="'.$menu_path.'/'.$key_item.'">'.$menu_item['title'].'</a>';
            get_main_menu($curr_menu['child'], $level + 1, $menu_path.'/'.$key_item, $page_path); // рекурсивный вызов функции для прорисовки следующего уровня
            $out .= '</li>';
        }
        $out .= '</ul>';
      }
      return $out;
    }
     // получаем html-фрагмент меню по структуре
     $out_site_menu = get_main_menu($site_menu, 0, '', $page_path);
    Ответ написан
    1 комментарий
  • Как передать данные js в php?

    @alexalexes
    1) Разобраться с клиент-серверной архитектурой вашей поделки. Научиться не путать код, который выполняется на клиенте, и код, который выполняется на сервере.
    2) Передать сведения от клиентской части вашего приложения на серверную по любой технологии: ajax, websocket или банальный редирект с get/post параметрами.
    Ответ написан
    Комментировать
  • Как заблокировать возможность делать скриншоты на моем сайте или хотя бы по нажатию на 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')
    }
    Ответ написан
    Комментировать