Ответы пользователя по тегу JavaScript
  • Можно ли это как то упростить?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Не совсем прямой ответ на ваш вопрос, скорее совет, как сэкономить память, сделать код расширяемым и оценить преимущества делегирования:

    document.addEventListener('click', function (event) {
    
    	switch (event.target.className) { // или
    																    // var class = event.target.classList;
    		case 'main-header__button':     // и в кейсах проверять class.contains('main-header__button')
    			doSomething(event.target);
    			break;
    
    		case '...':
    			...
    			break;
    
    		...
    
    	}
    
    });
    
    function doSomething(target) {
    	// выбрать в вашем случае относительно таргета, к примеру это сосед:
    	target.nextElementSibling.focus();
    	// выбрать в вашем случае относительно таргета, к примеру это сосед:
    	target.previousElementSibling.classList.add('main-header__search-active');
    }


    И да, выбросьте в помойку джейквери, ему пора на покой.
    Ответ написан
  • Как перевести jQuery в чистый JS?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Пробуй(те).

    var button = document.getElementsByClassName('allstatus-btn')[0], // предположим, что он единственный
        numbersAll = document.getElementsByClassName('number-all');
    
    button.onclick = function (event) {
        for (var i = 0; i < numbersAll.length; i++) {
            (function (i) {
                var _this = numbersAll[i],
                    id = _this.textContent;
    
                fetch(
                        'https://api.novaposhta.ua/v2.0/json/', {
                            method: 'POST',
                            headers: {
                                'Content-Type': 'application/json'
                            },
                            body: JSON.stringify({
                                "modelName": "TrackingDocument",
                                "calledMethod": "getStatusDocuments",
                                "methodProperties": {
                                    "Documents": [{
                                        "DocumentNumber": id,
                                        "Phone": ""
                                    }]
                                },
                                "apiKey": ""
                            })
                        }
                    )
                    .then(response => response.json())
                    .then(result => {
                        console.log(result)
                        result.data.forEach(function (item, i, arr) {
                            _this.insertAdjacentHTML('beforeend', item.Status);
                        });
                    })
            })(i);
    
        }
    }


    ПыСы: рано ещё для фетчь
    Ответ написан
    Комментировать
  • Как переписать без arguments.callee?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    //"use strict";
    let timeout = 100;
    let step = 13.33;
    let a = 0, b = 1000;
    let el = document.getElementById('test');
    
    
    function myAwesomeFunc() {
      if( a < b ) {
        setTimeout(myAwesomeFunc, timeout);
        el.innerHTML = a.toFixed(2);
        a += step;
      } else {
        el.innerHTML = b.toFixed(2);
      }
    }
    myAwesomeFunc();
    Ответ написан
    Комментировать
  • Как правильно написать условие для scroll function?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Передавать актуальное значение ширины в функцию-обработчик скролла и там уже делать работу или покидать её по условию ширины. Таким образом, как у вас сейчас, если ширина >= 900px, устанавливается обработчик на скролл и ему по боку то, что ширина потом может стать меньше, он от этого работать не перестанет.
    ИЛИ вариант два: можно и так оставить, но тогда при уходе в else, нужно снимать обработчик со скролла, но для этого нужно научиться навешивать обработчики, с которыми такое можно провернуть.
    Ответ написан
    Комментировать
  • Почему не работает alert при клике на инпут?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    если обработчик всё же есть, проверять так:
    if (event.target.checked) {
        alert( ' Добрый день ' );
        // где event.target - элемент на котором произошло событие - input
    }
    Ответ написан
  • Как показать элемент если выбраны input?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    var radios = document.querySelectorAll('[type="radio"]'),
    		div = document.getElementById('itogo');
    
    document.addEventListener('change', function(event) {
        if (event.target.type.toLowerCase() === 'radio') {
        	var group = event.target.name;
          for (var i = 0; i < radios.length; i++) {
                 
          	if (radios[i].name !== group && radios[i].checked) {
            	div.style.display = 'block';
            	break;
            }
          }
        }
    });
    Ответ написан
    Комментировать
  • Поиск javascript кода по html элементу?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Breakpoints/DOM Breakpoints в google Chrome. Почитайте.
    Ответ написан
    Комментировать
  • Как сделать автопрокрутку слайдера по классу?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Если совсем по каличному, то можно как-то так:

    setInterval(function() {
      document.getElementsByClassName('next')[0].click();
      var slide1 = document.getElementsByClassName('slide-container')[0],
        slidesContainer = document.getElementsByClassName('slides')[0];
      
      slidesContainer.appendChild(slide1);
    }, 4000);
    Ответ написан
  • Можно каким-то образом получить оставшееся время в конкретный момент времени от .animate()?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    В $.animate есть метод step с аргументами, один из которых прогресс
    Ответ написан
    Комментировать
  • Код, изменяющий оформление элементов, срабатывает только один раз. Почему?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей

    var el1 = $('.lol1'),
    		el2 = $('.lol2');
    
    $('.building1').on('click', function(event) {
    	$(el1).attr('id') ? $(el1).removeAttr('id') : $(el1).attr('id', 'lol1');
    	$(el2).attr('id') ? $(el2).removeAttr('id') : $(el2).attr('id', 'lol2');
    	// etc.
    });
    Ответ написан
    7 комментариев
  • Как сделать смену слайдов?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Вы там плагинов насовали... Нужно смотреть умеет ли плагин, который в ответе за драг-н-дроп отдавать коородинаты этого самого драгнутого элемента по событию драга. И сверять пересечение(ну или около того в радиусе квадрата) с заранее известными координатами кружочков ну и тогда, собственно, триггерить переключение на соответствующий слайд. Такое проще с нуля реализовать, когда у тебя есть полный контроль, чем пытаться скрестить плогины.
    Ответ написан
    Комментировать
  • Как сделать выпадающий список треков?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    1. Заверстайте (для начала хардкодом) список треков. На сам список повесьте слушатель клика, внутри обработчика клика определите индекс элемента, по которому кликнули и вызовите с ним функцию из п.2.
    2. Напишите функцию, которая будет принимать аргумент i - индекс, описанный выше. В ней треку устанавливаете .src = fileUrl[i]; и вызываете метод .play();
    Ответ написан
    Комментировать
  • Как ограничить количество карточек на чистом js?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей

    <style>
    	.wrap li {
    		display: none;
    	}
    </style>
    <div class="wrap">
        <ul>
          <li>Услуги1</li>
          <li>Услуги2</li>
          <li>Услуги3</li>
    			<li>Услуги4</li>
    			<li>Услуги5</li>
    			<li>Услуги6</li>
        </ul>
        <a href="#">Еще</a>
    </div>


    var li = document.querySelectorAll('.wrap li'),
    		a = document.querySelector('.wrap a'),
    		n = 2;
    
    function showMore(n) {
    	for (var i = 0; i < li.length; i++) {
    		if (i < n) {
    			li[i].style.display = 'block';
    			if (n === li.length) a.style.display = 'none';
    		} else  {
    				break;
    		}
    	}
    }
    showMore(n);
    
    a.onclick = function(e) {
    	e.preventDefault();
    	n += 2;
    	showMore(n);
    }
    Ответ написан
    Комментировать
  • Как правильно подключить две версии jquery в wordpress?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    - Что может быть хуже жуйквери? - Два жуйквери!
    Я бы посоветовал избавиться от джейквери, но вам не понравится такой ответ.
    Ответ, который понравится: можно, используя noConflict моде.
    Ответ написан
  • Как изменить все знаки?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    var str = 'transactions?TransactionsSearch[statuses][]=closed&TransactionsSearch[statuses][]=decline&TransactionsSearch[statuses][]=pending&TransactionsSearch[statuses][]=open?TransactionsSearch[specifications][]=transfer_main_user_to_main_company&TransactionsSearch[specifications][]=bonus_charge&TransactionsSearch[specifications][]=wallet_in_for_order_pay_blockchain&TransactionsSearch[direction]=all&TransactionsSearch[limit]=10'
    str.replace(/\?/g, '&').replace('&', '?');
    Ответ написан
    Комментировать
  • Аудиоплеер с плейистом?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    В фоне он работать не будет. Это зависит не от плеера, а от архитектуры вашего приложения. Я имею ввиду, что у вас вероятнее всего не SPA. А написать плеер действительно недолго и самому. Да и библиотек вагон.
    Ответ написан
    Комментировать
  • Как по клику подставить изображение?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Ответ написан
    Комментировать
  • Как устранить блокирование основного потока скриптом Яндекс.Карт?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Грузите карты асинхронно, а не в основном потоке.
    Ответ написан
    Комментировать
  • Каким образом реализовать вывод результата по клику на подсказку?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Не понял зачем жмякать на кнопку поиска, если по мере ввода улетают запросы и прилетают ответы из бд и, наверняка, показываются в виде выпадающего списка. Чтобы сделать элементы списка кликабельными, нужно передать в $.autocomplete({}) метод renderItem (пишу по памяти), ну и переопределить его на свой, чтобы рендерил элементы ссылками.
    Ответ написан
  • Как исправить переключение табов?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Потому, что event.target в таком случае становятся h3 или span, а не info-header-tab, а они соответственно не содержат класса info-header-tab. Нужно проверять по другому:

    info.addEventListener('click', function (event) {
    	let target = event.target;
    	let t;
    
    	if (target.parentElement.classList.contains('info-header-tab'))
    		t = target.parentElement;
    	else if (target.classList.contains('info-header-tab'))
    		t = target;
    
    	if (t) {
    		for (let i = 0; i < tab.length; i++) {
    			if (t == tab[i]) {
    				hideTabContent(0);
    				showTabContent(i);
    				break;
    			}
    		}
    	}
    });


    Если это вы писали, то вы должны уметь без труда добавить класс, который покрасит активный элемент в белый. Дерзайте
    Ответ написан
    Комментировать