Ответы пользователя по тегу JavaScript
  • Как изменить цвет звездочки в placeholder с помощью Js?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Нужно повесить прозрачный не кликабельный блок (слой) поверх формы. Это могут быть дивы с текстом или даже канвас. При вводе значений в форму звездочка должны убираться с помощью скрипта.

    Кстати, сам слой тоже должен скриптом ставиться, потому что если зайдет человек без JS, то будет смешно, когда при вводе в форму он продолжит видеть эти звездочки на экране. А так он просто не будет видеть их изначально, что является меньшим из зол.
    Ответ написан
  • Как найти точку окончания окружности на canvas?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Пользуясь формулой:
    (x – a)2 + (y – b)2 = R2
    Проверяйте все точки по кругу. Как только цвет изменится, это будет конец.
    Ответ написан
  • Mozilla Firefox блокирует(?) XHR запросы?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    В HTTP-заголовках, которые отдает сервер.
    Раз вы догадались, что данные кэшируются, то почему не загуглили? Тема избитая.

    Что нужно было сделать до создания вопроса:
    • Погуглить и попробовать сделать так, чтобы данные не кэшировались.


    Что нужно было сделать во время создания вопроса:
    • Рассказать о том, как вы пытались решить проблему, и привести заголовки ответа сервера.
    • Указать, что сервер отдает нужные заголовки по-вашему мнению, и кэширования быть не должно согласно спецификациям.
    • И что это парадокс, который вы не в состоянии решить.
    Ответ написан
  • Как подключить скрипт на чужой сайт?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Если вам удобство не нужно, и это только на один раз (то есть нет перехода между страницами), то скрипт можно подключить через консоль (F12). Просто копируете сам текст скрипта в консоль - он сразу выполнится и применится к текущей странице.
    Ответ написан
  • Почему отображаются две страницы?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Потому что на странице ошибка, которая в некоторых случаях подгружает второй файл.

    Зависимость искать не нужно.
    Нужно посадить программиста посмотреть содержимое index.html и найти ошибку.
    Ответ написан
    Комментировать
  • Как сделать на сайте красивую анимацию частиц или дыма?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Шейдеры в WebGL
    Ответ написан
    Комментировать
  • Почему последний элемент массива 1?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    var a = [1, 2, 3, 4, 5];
    console.log(a[3]); 
    //Выведет 4
    Ответ написан
    Комментировать
  • Как реализовать такую форму?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Canvas, если хочется быть уверенным в кроссбраузерности.
    Степень геморности примерно такая же.

    При правильном программировании можно будет в будущем легко масштабировать форму целиком и тюнить внутренние макро параметры, меняя лишь константы в скрипте.

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

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Вы же сами себе ответили и описали всё:
    1. Нужно создать всплывающее окно в котором пользователь выберет нужный перевод сайта
    2. Затем перенаправить его на выбранную версию
    3. Затем передать эти данные в cookie, чтобы при следующем заходе отображалась нужная версия сайта

    В чём проблема? Это уже пошаговая инструкция для того, кто будет выполнять эту задачу. Таким образом, это получается у вас не вопрос, а задание.
    Ответ написан
    4 комментария
  • Какие есть способы округлить число на js?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    //Почти идеальный вариант решения.
    //Если автору не нужно запускать ракеты в космос, то сойдёт.
    //Иначе нужно больше деталей по области применения ответа на вопрос.
    function round(x) {
      return x - (--x + (x < 0 ? -0.5 : 0.5)) % 1 + (x < 0 ? -0.5 : 0.5);
    }


    5d75f07526ad8568360406.jpeg
    Ответ написан
    Комментировать
  • Редактирование JSON файла с помощью форм на странице, как можно это сделать?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Это задание. Поэтому нужно вложиться деньгами или временем, а просто так в одном абзаце получить ответ не получится. В лучше случае вас можно отправить учиться или гуглить, но так вы начнёте тратить своё время как раз.
    Ответ написан
    Комментировать
  • Есть ли способ сбросить масштабирование страницы браузера после возвращения назад по истории просмотра?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    По идее это не ваши проблемы, а браузера (и пользователя соответственно). К тому же мало кто переключается туда-сюда, поэтому можно просто не думать об этом.

    Однако можете попробовать так:
    width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no
    Ответ написан
  • Правильный перебор Json?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Вопрос некорректный. JSON - это формат хранения данных в виде текста. Его нельзя перебрать. Можно перебрать сами данные, но для этого их нужно сначала перевести в другой формат, в переменные JS, что вы и делаете. То есть вы перебираете не JSON и даже не данные в виде текста, а массив.

    Перебрать JSON можно примерно также, как перебрать JavaScript.
    Ответ написан
    Комментировать
  • Сортировка таблицы методом sort на чистом JavaScript или js-библиотека?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Лучше использовать sort(). Это нативная, а потому быстрая, функция. Своя функция, если опустить время на создание массива, будет на порядок медленнее.

    Таким образом, всё упирается в копирование данных. И здесь могу посоветовать только одно: данные должны быть уже в переменных JS на момент загрузки страницы. Конечно, в самой таблице - тоже, на случай отсутствия JS у пользователя. И каждая сортировка просто формирует таблицу заново.

    Ещё вариант, сделать массив непосредственно из DOM-элементов, как-то так (пример):
    [...document.querySelectorAll('tr')]
    А после применения sort(), можно с помощью insert'ов сделать новую таблицу или даже пушить в существующую. Здесь плюс в том, что вы не меняете оформление и формат таблицы. То есть если другой программист (или вы в будущем) добавит новый столбец, то код, вероятно, не сломается.

    К слову, если у вас 100-500 элементов, а на странице редко бывает больше 500, то сортировать можно как угодно, пользователь не заметит разницы.
    Ответ написан
    Комментировать
  • Как в JSON проверить, что поле существует?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Примерно так:
    var obj = res.items[0].snippet.thumbnails;
    var max_width = 0, max_height = 0, name = 'unknown';
    for(let k in obj) if (max_width < obj[k].width) {
      max_width = obj[k].width;
      max_height = obj[k].height;
      name = k;
    }
    console.log('Name: ',name,' Width: ',max_width,' Height: ',max_height);
    Ответ написан
    Комментировать
  • Перезарядка умений setInterval 15 сек?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    const COOLDOWN_TIME = 15000;
    
    function startCooldown(skill) {
    	skill.Disable();
    	setTimeout(()={
    		skill.Enable();
    	}, COOLDOWN_TIME);
    }
    Ответ написан
    Комментировать
  • Как этот код записать без использования jQuery?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Примерно так:
    Код
    (()=>{
    	let element = document.querySelector('.window');
    	if (!element) return;
    	let right = parseInt(element.style.right) || 0;
    	let right_target = ((x*100)+(x*8-10)-100);
    	let tm_start = performance.now();
    	let id = setInterval(()=>{
    		let diff = Math.min(performance.now() - now, 1000);
    		let right_current = Math.round(right + (right_target - right) * diff * 0.001);
    		element.style.right = right_current + 'px';
    		if (diff >= 1000) clearInterval(id);
    	},10);
    })();
    Ответ написан
    Комментировать
  • SetInterval во время выполнения?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Когда выполняется код, на странице ничего не рендерится.

    Как только код преврался или закончил выполнение, то перед передачей управления другому асинхронному коду может произойти (а может и не произойти) куча событий, в том числе обновляется страница в соответствии со сделанными изменениями в ней.

    Так что во время первой итерации setInterval (или перед созданием setInterval) нужно затемнить блок. Не важно, в начале и в конце функции это делать, отрисовка начнется только после выхода из функции. А в последней итерации setInterval, соответственно, нужно убрать затемнение.
    Ответ написан
    Комментировать
  • Как удалить динамически созданный блок?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Не разбираясь во всех ваших хитросплетениях, давайте просто отдебажим ваш код:

    1. const modal = new Modal(document.querySelector('.modal'));

      Это то, что выполнится первым. В конструктор передается результат поиска элемента. Если элемент не найден, то querySelector выдаст null. Очевидно. Здесь нет проверок на null, но будем надеяться, что в теле конструктора они точно есть. Ну или хотя бы есть полная уверенность, что элемент с таким классом обязательно есть на странице.
    2. Входим в конструктор:
      this.modalElement = modalElement;
      // .......
      this.modalElement.querySelector(..................);

      И здесь происходит ошибка. Странно, проверки на null нигде нет. И судя по тексту ошибки, вы пытаетесь вызвать метод querySelector переменной modalElement, которая имеет значение null. Следовательно, в самом начале элемента с классом modal не было на странице.
    Ответ написан
    5 комментариев
  • Какая разница между объектами (или набором обьектов) и ассоциативным массивом?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    В JavaScript разницы нету. А вообще обычно разница в том, что объект может иметь методы, которые можно вызывать в контексте объекта. В том числе конструктор. В JavaScript, соответственно, есть прототипы. Но ирония в том, что массив в JavaScript - это тоже объект. Вообще этот язык исторически тянет кучу дикости с древних времен, а нам с этим жить. Хотя если строго формально, то ассоциативных массивов в JS нет.
    Ответ написан
    3 комментария