Ответы пользователя по тегу JavaScript
  • Как отвязать событие от document?

    @Ivan1331
    wrapperItems.forEach((elem, index) => {
                if(elem == obj) {
                    arrayCounters[index] = counter;
                    counter=0; // Вы забыли обнулить counter после каждого изменения
                }
            });
    Ответ написан
  • Почему click на кнопке START работает, а на кнопке STOP не срабатывает?

    @Ivan1331
    var Car=function (x, y){
    this.x=x;
    this.y=y;
    this.draw();
    
        };
        Car.prototype.draw=function(){
        var carHtml='<img width="100" src="../BMW_Car_PNG_VectorForFree.jpg">';
        this.carElement=$(carHtml);
        this.carElement.css({
            position: "absolute",
            left: this.x,
            top: this.y
        });
        $("body").append(this.carElement);
        };
        Car.prototype.moveRight=function(distance){     
                this.x+=distance;
                this.carElement.css({
                left: this.x,
                top: this.y
            });
        };
    
    var tesla=new Car(0, 130);
        var nissan =new Car (0, 230);
        var ford=new Car(0, 330);
        var tesla1=new Car(0, 430);
        var nissan1 =new Car (0, 530);
        var ford1=new Car(0, 630);
        
      var carMoving=function(){
        tesla.moveRight(Math.random()*2);
        nissan.moveRight(Math.random()*2);
        ford.moveRight(Math.random()*2);
        tesla1.moveRight(Math.random()*2);
        nissan1.moveRight(Math.random()*2);
        ford1.moveRight(Math.random()*2);
       };
       
       var carInterval;
       
       var activeStartBtn= function(){
        $("#startM").css("background", "green").attr("disabled",false);
       $("#stopM").css("background", "grey").attr("disabled",true);
       }
       
       var activeStopBtn= function(){
       	$("#startM").css("background", "grey").attr("disabled",true);
        $("#stopM").css("background", "red").attr("disabled",false);
       }
       
       var starting=function(){
       	activeStopBtn();
       	carInterval = setInterval(carMoving,5); //Что бы дальше остановить интервал, нам нужно его к чему то привязать, к примеру к переменной
    }
       var stop=function(){
       	activeStartBtn()
        clearInterval(carInterval); //А здесь мы уже останавливаем ссылаясь напеременную
       }
       
       activeStartBtn();
       
    	$("#stopM").click(function(){ stop() });
       $("#startM").click(starting);
    Ответ написан
    1 комментарий
  • Как убрать линк с кнопки?

    @Ivan1331
    document.querySelector('.кнопка').addEventListener('click', (e)=> {
         e.preventDefault()
    })
    Ответ написан
    Комментировать
  • Роутер для SPA использующий history api?

    @Ivan1331 Автор вопроса
    Оказывается вебпаку нужно разрешить работать с historyApi, имхо странная тема, может кто то пояснит зачем такая хитрая настройка нужна, и почему она по умолчанию false.
    historyApiFallback: true,
    Ответ написан
    Комментировать
  • JavaScript установить ключ объекта по переменной?

    @Ivan1331 Автор вопроса
    Вот нашел идеально решение
    function setToValue(obj, prop, val) {
      let props = prop.split('.'),
        final = props.pop(),
        p;
    
      for (var i = 0; i < props.length; i++) {
        p = props[i];
        if (typeof obj[p] === 'undefined') {
          if (typeof val !== 'undefined') {
            if (i != props.length)
              obj[p] = {};
          } else
            return undefined;
        }
        obj = obj[p];
      }
      return typeof val !== "undefined" ? (obj[final] = val) : obj[final];
    }
    Ответ написан
    Комментировать
  • В поле input не отображалось нажатие любых клавиш кроме цифр?

    @Ivan1331 Автор вопроса
    Всем спасибо за ответы, но вы меня немного не поняли, сам придумал ответ на вопрос:
    // вешаю листенер на импут
    numberOfGoods.addEventListener('keypress', function(event) {
       
        if(!keys.includes(event.key)){ // массив keys где лежат нужные клавиши
        
        event.preventDefault(); // перехватываю событие нажатия ненужной мне клавиши 
       
        }
        }, false);
    Ответ написан
    Комментировать