Ответы пользователя по тегу JavaScript
  • Почему фунция выполняется раньше времени?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Потому что вы передаёте вызов функции setInterval'у, а нужно передавать саму функцию:

    setInterval( yeah, 5000 );

    А также вы перепутали аргументы.
    Ответ написан
    1 комментарий
  • Насколько может быть полезен codewars?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    return song.split('WUB').filter(Boolean).join(' ');

    Эта строка кода возвращает строку, сформированную следующим образом: значение строковой переменной song сплитится по разделителю ‘WUB’ в результате получается массив со строками, далее каждый элемент этого массива проходит фильтрацию в методе filter, передаваясь в качестве аргумента функции Boolean, на предмет является ли значение true при приведении его к логическому типу аналогично коду
    if ( variable ) {
        return true;
    } else {
        return false;
    }
    , далее все значения, прошедшие проверку конкатенируются в строку через пробелы.

    Подобные задачи есть смысл решать только, если вы планируете учавствовать в олимпиадах по программированию, в ином случае их практическая ценность стремится к нулю.
    Ответ написан
  • Как в каждом элементе массива убрать первые 3 символа и сохранить его?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Ну легкотня же... В чём проблема перезаписывать текущий итерируемый элемент массива?
    for (var i = 0; i < result.length; i++) {
        result[i] = result[i].slice(3);
    }
    console.log(result);
    Ответ написан
    Комментировать
  • Почему вылазит ошибка: "Uncaught SyntaxError: Unexpected token ')'"?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Слушателю нужно передавать функцию либо посредством её имени, либо как анонимную функцию
    function() { move(); /* или какая угодно другая работа */ }
    , но никак не вызов функции.

    Решение вашей проблемы:
    document.addEventListener( 'keydown', move );
    Ответ написан
    Комментировать
  • Uncaught TypeError: XMLHttpRequest.open is not a function?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Сначала нужно создать экземпляр объекта, потом вызывать его методы:
    var request = new XMLHttpRequest();
    request.open('GET', url, true);
    Ответ написан
    3 комментария
  • В чем разница между blur и change?

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

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Нет таких событий.
    1. На документ вешается слушатель события mousedown, в нём ставите флаг = true.
    2. На документ(или на общий элемент оборачивающий все интересующие элементы) вешается слушатель mousemove, в нём проверяется установлен ли флаг из п.1. Если флаг === true, делаем что нас интересует.
    3. На документ вешается слушатель события mouseup, в нём флаг устанавливается в false.
    Ответ написан
  • Как можно сократить этот js код?

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

    Здесь нечего сокращать, но можно оптимизировать: сохранить, как минимум, $('#text_0') в переменную, а не искать её всякий раз:
    const $elem = $('#text_0');
    
    ...
    success: function(html){
        $elem.html(html);
    }
    ...

    И можно написать враппер:

    const $elem = $('#text_0');
    function ajax(selector, url) {
    	$(selector).on('click', function(){
    		$.ajax({
    			url: url,
    			success: function(html){
    				$elem.html(html);
    			}
    		});
    	});
    }

    Использование:
    ajax('#gib', 'side/gib.html');
    ajax('#sg989', 'side/sg98.html');

    и т.д.
    Ответ написан
    1 комментарий
  • Как изменить класс по клику?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    $('.tt-filters-button-toggle').on('click', function () {
        $('.first').toggleClass('uk-width-3-4 uk-width-4-4');
    });
    Ответ написан
    Комментировать
  • Непонятная ошибка "Cannot read "innerHTML of null" в JS, как исправить?

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

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    var obj = {};
    
    for (var i = 0; i < data.length; i++) {
      if (obj[data[i].country]) {
        obj[data[i].country].push(data[i].city);
      } else {
        obj[data[i].country] = [];
        obj[data[i].country].push(data[i].city);
      }
    }
    
    console.log(obj);
    Ответ написан
  • Как обрезать значение?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    function updateTotal() {
        document.getElementById("total").innerHTML = (productPrice[getProductType()] * getNumberOfDays()).toFixed(2);
    }
    Ответ написан
    1 комментарий
  • Как вместе с кодами стран менять и флаг?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    document.querySelector('.custom-select-wrapper').addEventListener('click', function() {
        this.querySelector('.custom-select').classList.toggle('open');
    })
    
    for (const option of document.querySelectorAll(".custom-option")) {
        option.addEventListener('click', function() {
            if (!this.classList.contains('selected')) {
                this.parentNode.querySelector('.custom-option.selected').classList.remove('selected');
                this.classList.add('selected');
                this.closest('.custom-select').querySelector('.custom-select__trigger span').textContent = this.textContent;
                this.parentElement.previousElementSibling.style.backgroundImage = getComputedStyle(this).backgroundImage;
            }
        })
    }
    
    window.addEventListener('click', function(e) {
        const select = document.querySelector('.custom-select');
        if (!select.contains(e.target)) {
            select.classList.remove('open');
        }
    });


    Переписал ваш код на более рациональный:

    const select = document.querySelector('.custom-select');
    
    (function() {
        let input = select.firstElementChild,
            text = input.querySelector('span'),
            options = select.lastElementChild;
            
        select.addEventListener('click', function(ev) {
            this.classList.toggle('open');
            let el = ev.target;
            if (el.classList.contains('custom-option')) {
                options.querySelector('.selected').classList.remove('selected');
                el.classList.toggle('selected');
                text.textContent = el.textContent;
                input.style.backgroundImage = getComputedStyle(el).backgroundImage;
            }
        });
    })();
     
    window.addEventListener('click', function(e) {
        if (!select.contains(e.target)) {
            select.classList.remove('open');
        }
    });
    Ответ написан
    8 комментариев
  • Почему когда я поставил ссылку на js файл в начало он у меня перестал работать?

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

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    document.querySelector('.downer__list-top').addEventListener('click', function(e) {
       for (var i = 0; i < this.children.length; i++) {
           this.children[i].classList.remove('active');
       }
       e.target.classList.add('active');
    });
    Ответ написан
    Комментировать
  • Как можно остановить blur после ajax отправки формы?

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

    Примитивный пример реализации валидации:
    $(document).on('submit', 'form', function(e) {
      e.preventDefault();
      
      if ( !formValidate(this) ) return;
    	console.log('send.')
      
      $.ajax({
        type: "POST",
        url: 'url',
        data: '',
        success: function(data) {
          console.log(data);
        },
    	error: function(e) {
          console.warn(e);
    	}
      });
    });
    
    function formValidate(form) {
      for (var i = 0; i < form.children.length; i++) {
        if (form.children[i].type !== 'submit' && form.children[i].value.length === 0) {
          // form.children[i].value.length === 0
          // это условие можно модифицировать
          console.log('bad value in', form.children[i]);
          form.children[i].focus();
          return false;
        }
      }
      return true;
    }
    Ответ написан
  • Как из функции передать переменную в функцию?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Предполагается, что функция func1 всегда принимает в качестве аргумента именно функцию, иначе будет брошено исключение.
    function func1(func) {
      let value = 'val';
      func(value);
    }
    
    function func2(v) {
      alert(v);
    }
    
    func1(func2);
    Ответ написан
    1 комментарий
  • Как создать кнопку включить отключить?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    <button class="i-am-a-super-button">off</button>

    document.querySelector('.i-am-a-super-button').onclick = function(e) {
        this.textContent = this.textContent === 'off' ? 'on' : 'off';
        var line = document.querySelector('.hr-vertical-gradient');
        line.style.display = getComputedStyle(line).display === 'block' ? 'none' : 'block';
    }
    Ответ написан
  • Как сделать форму выбора(марка автомобиля,модель итд) как на сайте drom.ru(описание внутри)?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    1. Именно потому что вы используете какие-то библиотеки, считаете написание подобной формы велосипедом и прочие глупые мысли, вы и оказываетесь на данном ресурсе в качестве вопрошающего.
    2. Генерировать JavaScript'ом из данных, о которых речь в следующем пункте.
    3. JSON. Формируете массив ДжаваСкрипт объектов аля:

    [
        {
            "Mercedes": {
                "E-class": {
                    "тут уж": "на что фантазии хватит"
                },
                "C-class": {
                    "тут уж": "на что фантазии хватит"
                },
                "S-class": {
                    "тут уж": "на что фантазии хватит"
                },
            }
        },
        {
            "Porsche": {
                "911": {
                    "тут уж": "на что фантазии хватит"
                },
                "928": {
                    "тут уж": "на что фантазии хватит"
                },
                "944": {
                    "тут уж": "на что фантазии хватит"
                },
            }
        }
    ]

    И генерируете на его основании форму. Над структурой нужно подумать хорошенько, чтобы с годом не было больно потом. Можно как с бекенда получать данные, так и иметь на фронте все данные, решать задачу можно сколь угодно вариативно в зависимости от нюансов. It's up to you.
    Ответ написан
    Комментировать
  • Будет ли работать скрипт если открыть его в новой вкладке?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Не глядя в ваш сайт на 100% уверен, что ссылки пагинации обрабатываются скриптом (причём неверно). Когда вы открываете страницу пагинации в новой вкладке, соответственно открывается просто ссылка, которая у вас в <a href=""> и она как раз верная. Так что всё просто, проверяйте свой скрипт пагинации - вы неверные данные отправляете на сервер за страницей.
    Ответ написан
    3 комментария