Ответы пользователя по тегу JavaScript
  • Как сделать последовательные select?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    Это называется cascade select
    Например
    Ответ написан
    Комментировать
  • Как можно постоянно наблюдать изменение ширины элемента?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    Комментировать
  • Как загрузить страницу уже с выполненным js?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    Сталкивался с этим. Решил эту проблему так:
    1) Нашёл скрипт после выполнения которого мне нужно выполнить свой
    2) Через innerHTML изменил название функции(но не вызова этой функции) из например foo() на foozzz()
    3) В своём расширении создал функцию foo() ровно с тем же кодом, но в конце добавил свой код или вызов своей функции(в вашем случае будет код добавления элементов)
    4) Сделал inject моей функции foo() в head страницы.

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

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    Обычно делают под popup прозрачный(или слегка затемненный) блок div на 100% ширины и высоты, а на него вешают onclick при котором закрывается popup
    Ответ написан
    Комментировать
  • Как отправить запрос на сервер с данными из формы?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    Ответ написан
    Комментировать
  • Как сделать кнопки в боте вк?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    Ответ написан
    Комментировать
  • Прибавить к результату число ajax?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    $('.rp_cost').html(result.success+'+100 рублей.');
    $('.rp_cost').html(parseInt(result.success)+100);
    не знаю какой из вариантов нужен
    Ответ написан
    7 комментариев
  • Можно ли конвертировать js массив в excel строку?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    var elements= ['AAA', 'BBB', '111'];
    elements.join('\t');

    на выходе будет строка, елементы которой разделены табуляцией(отсюда копировать нет смысла, табуляция заменяется)
    "AAA BBB 111"
    Скопировав её и вставив в эксель - каждый элемент будет в своем столбце
    Ответ написан
    Комментировать
  • Как сделать так, чтобы вместо текста заголовков вырезался сам?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    document.querySelector('.productdetails').innerHTML = document.querySelector('.productdetails').innerHTML.replace(/Заголовок /g, '')
    Ответ написан
  • Как сделать canvas цикличным?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    тут вижу 2 варианта
    1) отслеживаешь когда координаты выходят за пределы видимого поля, у тебя это 0 и 400, и перерисовываешь на несколько объектов, так как у тебя уже не 3 палки, а 2 с одной стороны и 1-2 с другой
    2) но проще размножить твою фигуру по X и Y на расстоянии 400 пикселей от краев. тогда при перемещении за границы с другой стороны будет появляться другая, точно такая же фигура, что придаст нужный эффект.
    Ответ написан
    Комментировать
  • Почему .removeClass не удаляет класс, а .addClass добавляет класс?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    Потому что нужно без точки
    $("#N").removeClass('answer-one'); 
    $("#N").addClass('answer-one-block');

    и в addClass тоже без точки.
    при удалении он не находит у элемента класс ".answer-one" так как у элемента "answer-one"
    при добавлении JS добавляет как есть ".answer-one"
    Ответ написан
    1 комментарий
  • Как создать строку в таблице с помощью DOM?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    let a = {
        name:['Анна', 'Ксения', 'Алиса'],
        famile:['Ивашкина','Малюк','Поветкина'],
        age:['23','22','20']
    }
    
    function element(x) {
        for(let i=0; i<x["name"].length;i++){
            let tr = document.createElement('tr');
            let td1 = document.createElement('td');
            let td2 = document.createElement('td');
            let td3 = document.createElement('td');
            let tn1 = document.createTextNode(x["name"][i]);
            let tn2 = document.createTextNode(x["famile"][i]);
            let tn3 = document.createTextNode(x["age"][i]);
    
            td1.append(tn1);
            td2.append(tn2);
            td3.append(tn3);
    
            tr.append(td1);
            tr.append(td2);
            tr.append(td3);
    
            document.getElementById('table').append(tr);
        }
    }
    element(a);
    Ответ написан
    Комментировать
  • Как сделать, чтобы js в select сам выбирал текущий месяц?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    let nowMonth = new Date();
    document.getElementById('select').value = nowMonth.getMonth() + 1;
    Ответ написан
    1 комментарий
  • Имеют ли расширения браузера доступ к localstorage?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    да, запросто.
    Ответ написан
    Комментировать
  • Как правильно сбросить svg анимацию?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    Предлагаю к каждой анимации добавить "анти анимацию", которая при выключении тумблера будет делать то же самое, только наоборот, ну и конечно очень быстро.
    Итого:
    Добавить анимацию наоборот к каждому элементу:
    <svg
                  xmlns="http://www.w3.org/2000/svg"
                  width="731"
                  height="366"
                  viewBox="0 0 731 366"
                >
                  <g fill="none" fill-rule="evenodd">
                    <!--ЛИНИЯ-->
                    <path
                      id="graph"
                      stroke-linejoin="round"
                      stroke-width="4"
                      d="M24 359.5c337.042-37 563.376-143.167 679-318.5"
                      style="stroke:#D3D802;stroke-width:3px;stroke-dasharray:1358;stroke-dashoffset:1358;"
                    />
                    <animate
                      xlink:href="#graph"
                      begin="click"
                      id="ani-graph"
                      dur="3s"
                      attributeName="stroke-dashoffset"
                      to="0"
                      fill="freeze"
                    />
                    <!--анимация наоборот-->
                    <animate
                      xlink:href="#graph"
                      begin="click"
                      id="ani2-graph"
                      dur="0.01s"
                      attributeName="stroke-dashoffset"
                      to="1358"
                      fill="freeze"
                    />
                    <!--КРУЖКИ-->
                    <circle
                      id="point1"
                      cx="23"
                      cy="359"
                      r="5"
                      fill="#FFF"
                      stroke="#EF7D01"
                      stroke-width="4"
                      opacity="0"
                    />
                    <animate
                      xlink:href="#point1"
                      begin="click"
                      restart="whenNotActive"
                      id="ani-point1"
                      attributeName="opacity"
                      to="1"
                      fill="freeze"
                      dur="0.25s"
                    />
                    <!--анимация наоборот-->
                    <animate
                      xlink:href="#point1"
                      begin="click"
                      restart="whenNotActive"
                      id="ani2-point1"
                      attributeName="opacity"
                      to="0"
                      fill="freeze"
                      dur="0.01s"
                    />
    
                    <circle
                      id="point3"
                      cx="703"
                      cy="41"
                      r="5"
                      fill="#FFF"
                      stroke="#EF7D01"
                      stroke-width="4"
                      opacity="0"
                    />
                    <animate
                      xlink:href="#point3"
                      begin="click"
                      restart="whenNotActive"
                      id="ani-point3"
                      attributeName="opacity"
                      to="1"
                      fill="freeze"
                      dur="0.25s"
                    />
                    <!--анимация наоборот-->
                    <animate
                      xlink:href="#point3"
                      begin="click"
                      restart="whenNotActive"
                      id="ani2-point3"
                      attributeName="opacity"
                      to="0"
                      fill="freeze"
                      dur="0.01s"
                    />
    
                    <circle
                      id="point2"
                      cx="383"
                      cy="279"
                      r="5"
                      fill="#FFF"
                      stroke="#EF7D01"
                      stroke-width="4"
                      opacity="0"
                    />
                    <animate
                      xlink:href="#point2"
                      begin="click"
                      restart="always"
                      id="ani-point2"
                      attributeName="opacity"
                      to="1"
                      fill="freeze"
                      dur="0.25s"
                    />
                    <!--анимация наоборот-->
                    <animate
                      xlink:href="#point2"
                      begin="click"
                      restart="always"
                      id="ani2-point2"
                      attributeName="opacity"
                      to="0"
                      fill="freeze"
                      dur="0.01s"
                    />
                  </g>
                </svg>

    А далее запускаем эти анимации при выключении тумблера:
    document.addEventListener("DOMContentLoaded", function() {
            let radioBtn = document.querySelector("#checkbox");
            let badImg = document.querySelector(".graph__img--bad");
            let goodImg = document.querySelector(".graph__svg");
            //let graphInfo = document.querySelector(".graph-info"); Тут закомментировал, так как элемента нет
            let graphMark = document.querySelector(".graph__mark");
            let graphBody = document.querySelector(".graph__radio");
            let graphSection = document.querySelector(".graph");
    
            let svgLine = document.getElementById("ani-graph");
            let svgPoint1 = document.getElementById("ani-point1");
            let svgPoint2 = document.getElementById("ani-point2");
            let svgPoint3 = document.getElementById("ani-point3");
    
            let animate = document.querySelectorAll("animate");
            const toggleGraph = () => {
              let isChecked = radioBtn.checked;
    
              if (isChecked) {
                svgLine.beginElement();
    
                setTimeout(() => svgPoint1.beginElement(), 100);
                setTimeout(() => svgPoint2.beginElement(), 800);
                setTimeout(() => svgPoint3.beginElement(), 1730);
    
                badImg.classList.add("hide");
                goodImg.classList.add("show");
                //graphInfo.classList.add("show"); Тут закомментировал, так как элемента нет
                graphMark.classList.add("show");
                graphBody.classList.add("show");
                graphSection.classList.add("active");
              } else {
                animate.forEach(item => {
                  item.onend = () => {
                    console.log("endEvent fired");
                  };
                });
                badImg.classList.remove("hide");
                goodImg.classList.remove("show");
                //graphInfo.classList.remove("show"); Тут закомментировал, так как элемента нет
                graphMark.classList.remove("show");
                graphBody.classList.remove("show");
                graphSection.classList.remove("active");
    
                document.getElementById("ani2-graph").beginElement();// Запуск анимации наоборот
                document.getElementById("ani2-point1").beginElement();// Запуск анимации наоборот
                document.getElementById("ani2-point2").beginElement();// Запуск анимации наоборот
                document.getElementById("ani2-point3").beginElement();// Запуск анимации наоборот
              }
            };
    
            radioBtn.addEventListener("click", toggleGraph);
          });
    Ответ написан
    Комментировать
  • Почему не работает функция?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    У тебя в условии
    if (res1.length > res2.length)
    но нет обратного. если вызвать наоборот
    console.log(getGreatestCommonDivisor(2000, 1000));
    то уже будет лучше, возвращает нужное значение, но всё равно не верно работает.
    Предлагаю так, чтобы само определяло какой массив больше.
    function getGreatestCommonDivisor (num1, num2) {
      let res1 = dividers(num1);
      let res2 = dividers(num2);
      let a = res1;
      if (res1.length > res2.length) {
        a = res2;
      }
      for (var i = a.length; i >= 0; i--) {
        if (res1.indexOf(a[i]) != -1) {
          break;
        }
      }
      return a[i];
    }
    Ответ написан
    Комментировать
  • Почему не работает скрипт при добавлении новой кнопки со скриптом?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    У тебя две кнопки с одинаковым id pack1
    Ответ написан
    Комментировать
  • Как вывести js в html?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    Используйте к примеру так:
    let p=document.createElement('p');
    let txt=document.createTextNode(youtext);
    p.append(txt);
    document.getElementById('price').append(p);
    Ответ написан
  • Как вызвать FETCH один раз?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    Объяви переменную вне функции и помести результат фетч в неё.
    Ответ написан