Ответы пользователя по тегу JavaScript
  • Открытие блока при наведении на кнопку?

    @choupa
    Архитектор (обычный, который строит)
    $("*:not(.show_catalog, #subcatalog)").on('mouseover' {
        $("#subcatalog").removeClass("hovered");
      } )


    Конструкция $(document).on('mouseover' ... это вообще какая-то ерунда. Её быть не должно. Наверное подразумевалось $("*").on('mouseover' .... В таком случае дальше лучше не проверять e.target, а сразу же в селекторах это сделать, как собственно я показал выше.
    Ответ написан
    Комментировать
  • Как заставить элементы дивгаться статично?

    @choupa
    Архитектор (обычный, который строит)
    Для начала вы ответьте себе на вопрос: как, по каким траекториям должны двигаться круги когда курсор стоит. Обратите внимание, что сейчас движения ограничены, т.е. круги движутся по прямой, на курсор или от курсора, и довольно быстро останавливаются. То же происходит и при первоначальной загрузке.

    Как по вашему будут двигаться круги, когда их движение не ограничено во времени? Они разлетятся к чертям или как? Очевидно, что вы не хотите, чтобы они все разлетелись. Стало быть, должны (откуда-то) генериться новые круги (что данным алгоритмом совсем не предусмотрено), или же движение существующих должно быть циклическим.

    Это всё я говорю к тому, что данный алгоритм, который вы где-то надыбали, не годится для ваших целей. Как минимум, он должен быть существенно переработан. Настолько, что фактически это будет новый алгоритм! И вообще прежде чем делать, вы должны были такие вопросы сами себе задать, понаблюдав за поведение существующего алгоритма.
    Ответ написан
    Комментировать
  • Как заменить внутри строки с помощью regexp?

    @choupa
    Архитектор (обычный, который строит)
    Проверяем здесь:
    https://regex101.com/r/7MzABW/1

    Пишем JS:
    yourString.replace( /(numberPinyin":\s*".*)(v)(.*)"/g, '$1ü$3' )
    Ответ написан
    Комментировать
  • Что произойдёт в setInterval-вызовами, если они были запущены внутри объекта, который был убит?

    @choupa Автор вопроса
    Архитектор (обычный, который строит)
    Осознал ошибочность затеи, т.к. всё равно в асинхронную функцию не могу передать контекст объекта, а именно ради этого я и хотел запускать setInterval из конструктора. Буду запускать setInterval не изнутри объекта, а в глобальном контексте, вынеся нужные свойства из объекта в глобальные.
    Ответ написан
    Комментировать
  • Как в POST форме правильно передать данные, если использую внешний диалог подтверждения?

    @choupa
    Архитектор (обычный, который строит)
    Но я бы всё-таки ajax использовал. Отправляю запрос на удаление по адресу url, и если всё удачно, то удаляю кнопку ту, которую нажали.

    ...
    if  (willDelete ) {
    	var xhr = new XMLHttpRequest ();
    	xhr.open( 'POST', url );   //  url — адрес обработчика
    	xhr.send( event.target.value );     //  Отправка асинхронного запроса с id
    	
    	//  Ожидание ответа
    	xhr.onreadystatechange = function()	{
    		if ( this.readyState == 4 )     //  Если ответ ОК, то 
    			event.target.remove();   //  удаляем кнопку со страницы
    		else
             ...   // Здесь действия, если на сервере что-то не удалось, сообщение или что-то ещё
    	}
    }

    _____
    UPD: Затупил, не увидел, что у вас jQuery. Тогда можно ещё короче написать, чем на ваниле, особенно, если не проверять ответ сервера :) :

    <button value="1">Удалить файл id=1</button>
    <button value="2">Удалить файл id=2</button>
    <button value="3">Удалить файл id=3</button>
    
    <script>
    $( 'button' ).click( () => {
    	var but = $( this );
    	swal( {
    		title      : "Вы уверены?",
    		text       : "Удалить этот файл из комплекта документов?",
    		icon       : "warning",
    		buttons    : [ 'Отмена', 'Удалить' ],
    		dangerMode : true,
    		} )
    	.then( ( willDelete ) => {
    		if ( willDelete )	{
    			$.post( url, but.val() );
    			but.remove();
    		}
    	} )
    } )
    </script>
    Ответ написан
    Комментировать
  • Почему ошибка Refused to set unsafe header "User-Agent"?

    @choupa
    Архитектор (обычный, который строит)
    А у вас наверное на хостинге SSH, а запрос вы отправляете без SSH.
    Ответ написан
  • Не могу найти ошибку, почему не выпадает меню?

    @choupa
    Архитектор (обычный, который строит)
    А где определение переменных menu и openMenu ?
    var menu = document.querySelector ('#menu' );
    var openMenu = document.querySelector ('#openMenu' );


    UPD: Да там всё из одних ошибок. Такое впечатление, что вы выдрали откуда-то кусок кода и вообще не понимаете, что там происходит.

    1. Класc active вообще не определён.
    2. При открытии меню (если всё предыдущее исправить) у него вообще уничтожается всё содержимое, заменяясь на надпись open.

    Там вообще всё надо выкинуть, изучить JS, а потом написать нормально с нуля.
    Ответ написан
    2 комментария
  • Можно ли как то отследить событие смены value у input если эта смена произошла из js?

    @choupa
    Архитектор (обычный, который строит)
    1. Вызывате обработчик там, где меняете значение value.

    2. В том месте, где вы меняете значение value генерируйте пользовательское событие методом trigger. А в другом —подпишитесь на это событие через bind.

    3. Если невозможно создать событие там, где меняется value, то создайте функцию, которая вызывается через setInterval, и которая проверяет, не изменилось ли указанное значение. Ну а дальше снова пункт 1 или 2. В случае изменения value эта функция может или напрямую может вызывать обработчик, или же, опять-таки, генерировать пользовательское событие, которое слушает тот, кому нужно.
    Ответ написан
    1 комментарий
  • Как вывести дату публикации с помощью JS?

    @choupa
    Архитектор (обычный, который строит)
    Определитесь, что есть "дата публикации"? Если это дата создания HTML-файла, то так:
    document.write( document.lastModified )
    Дата будет дописана в конец. Если надо в конкретное место, то выберите нужный элемент c id = date и вставьте в него:
    document.querySelector( '#date' ).innerHTML = document.lastModified
    Ответ написан
    Комментировать
  • Как обрезать текст при маленьком разрешении вставив между многоточие ...?

    @choupa
    Архитектор (обычный, который строит)
    Можно воспользоваться CSS-свойством text-overflow: ellipsis, которое обрезает не влезающий текст многоточием. В вашей ситуации можно разбить url на два блока:

    | someblablalblatestdevho | st.ru |

    Первый блок сделать резиновым с text-overflow: ellipsis, а второй жёстким.
    Ответ написан
    Комментировать
  • Кто может объяснить код js?

    @choupa
    Архитектор (обычный, который строит)
    1.
    ans — это коллекция, в неё складываются некие числа, которые получают на предыдущем этапе алгоритма. Я сделал отступы и убрал мусорные скобки:
    if (!ans.size == 0)           //  Если в коллекции есть хоть один элемент, 
         for (let j of ans)        //  то перебираем её в цикле 
               console.log(j);    //  и выводим каждый элемент. 
    else                               //  Если коллекция пустая,
         console.log(0);         //  то выводим 0.


    2.
    Что касается решения задачи, то мне она видится очень непростой. По крайней мере за 5 минут, я не вижу у неё простого решения. Очевидно, что выигрышной стратегии у Пети тут в общем случае вообще и нет, после первого хода Пети (допустим, он взял К1 спичек), Ваня стоит ровно перед той же задачей, только с другими параметрами: N → N-K1, K → K1+1.

    Ход игры зависит не только от Пети, но и от Вани. Есть прямолинейный путь: строить дерево вариантов. Но это рекурсивный перебор. Но сдаётся мне, что решение задачи не может быть таким простым в виде однопроходного цикла. Представленное решение (алгоритм) я вообще не понимаю! Тем более он работает неправильно. Допустим N=6, К=5. Очевидно, что Пете надо брать 5 спичек, чтобы оставить Ване одну, чтобы он заведомо её взял и проиграл. Ваш алгоритм для таких условий выдаст бессмыслецу, напечатает два числа: 0, -1.
    Ответ написан
  • Как изменить background-image у div при наведении на ссылку (a)?

    @choupa
    Архитектор (обычный, который строит)
    Ответ написан
    Комментировать
  • Как быстро скрыть большое количество элементов?

    @choupa
    Архитектор (обычный, который строит)
    Предлагаю сразу в документе нужным элементам прописать класс to_hide. Само определение класса сделать по ходу выполнения, когда надо скрыть элементы:
    $('body').append('<style>.to_hide{display:none}</style>')

    Фишка в том, что тут нет медленной операции выборки прорвы элементов, класс to_hide с самого начала прописан элементам!

    P.S.: Сначала я решил прописать класс order_item прямо в HTML в <style>...</style>, а потом регулярным выражение добавлять в описание класса display:none. Даже написал сюда такой ответ, но потом до меня дошло, что этот гемор не нужен, а лучше сделать это отдельным классом.
    Ответ написан
    Комментировать
  • Как сделать кнопку "сохранить как pdf"?

    @choupa
    Архитектор (обычный, который строит)
    Вам надо генерировать на стороне сервера pdf-документ, который хотите дать сохранить клиенту. Для этого есть разные библиотеки, я пользуюсь mpdf (это PHP). Чтобы сохранить, можно сделать обычный линк
    <a href="document.pdf">Сохранить</a>
    Ответ написан
    Комментировать
  • Создать тест/опросник на JS?

    @choupa
    Архитектор (обычный, который строит)
    Код JS должен "видеть" html-код, с которым он работает. Если у вас JS в head, то он начинает выполняться ещё до загрузки все остального DOМ, поэтому он и не работает, как надо. Переставьте JS в конец файла.

    P.S.: Остальное даже не смотрел.
    Ответ написан
  • Как имитировать работу браузера на php без закрытия вкладки (сеанса)?

    @choupa
    Архитектор (обычный, который строит)
    Всегда есть вариант написать Userscript для браузера, и пусть он в "естественной среде" жмёт кнопки, отправляет запросы, парсит содержимое.
    Ответ написан
    3 комментария
  • Как санитайзить такие строки?

    @choupa
    Архитектор (обычный, который строит)
    Пройтись заменой по регулярному выражению:
    str.replace( /\\u\d{4}/, '')
    Ответ написан
    Комментировать
  • Регуляркой получить значения параметра url для дальнейшего взаимодействия?

    @choupa
    Архитектор (обычный, который строит)
    count = myURL.match( /count-(\d+)/ )[ 1 ];
    specific = myURL.match( /specific-(\d+)/ )[ 1 ];
    Ответ написан
  • Как сделать прилипающий хедер как в iPhone, только на JS?

    @choupa
    Архитектор (обычный, который строит)
    Грубо говоря, вот так:
    $( window ).on( "scroll", () => {
       if ( parseInt( $( window ).scrolltop() ) < 0 )
          $( "#sticky_header" ).show();
       else
          $( "#sticky_header" ).hide();
    } )
    Ответ написан
  • Не срабатывает функция в скрипте JQuery, как поправить?

    @choupa
    Архитектор (обычный, который строит)
    У вас у обоих инпутов одинаковые id (и одинаковые name), потому и не работает. Например здесь
    if (a.val() != "")
    всегда проверяется значение в первом инпуте, даже, если функция запущена по событию blur на втором инпуте.

    Offtop: Это тупо просить пользователя дважды писать email "для проверки". Это же не пароль, который звёздочками отображается. Я в таких случаях все копипастчу email.
    Ответ написан
    1 комментарий