Ответы пользователя по тегу JavaScript
  • Fullscreen на мобилке, как сделать?

    @Aksigera
    frontender.info/fullscreen
    Тут полная инфа. Конкретно - нужно добавлять вендорные префиксы:

    var requestFullScreen = el.requestFullscreen || el.mozRequestFullScreen || el.webkitRequestFullScreen;
    var cancelFullScreen = doc.exitFullscreen || doc.mozCancelFullScreen || doc.webkitExitFullscreen;
    Ответ написан
  • Код про утечки памяти?

    @Aksigera
    Каждый раз вызов ReplaceThing создает локальную область видимости, для которой существует свой priorThing со своим значением, которое в момент каждого вызова replaceThing, начиная со второго, равно new Array(1000000).join('*').join('*'), т.к. переменная theThing находится в глобальной области видимости. Тут вопрос понимания замыканий: каждый раз при вызове функции определение var создает персональные переменные, которые и хранятся в той области видимости: И как только переменная используется в любом из замыканий, то она попадает в лексическую область видимости, используемую всеми замыканиями в этой области видимости
    PS: замыкания и области видимости синонимичны
    Ответ написан
    2 комментария
  • Как оптимизировать js?

    @Aksigera
    Для таких вещей стоит использовать конструкторы. И для переключения каждого элемента существуют циклы (for, while).
    Переписал пример с использованием конструктора (избавляемся от дублирования кода) и добавил циклы. Что именно делает пример, разбираться не стал - думаю, сами прикрутите.
    function Update(idFirst, idSecond,idThird,someAnotherNumberOfId,howMuchYouWant) {
        update1 = function () {
            var val = +this.value;
            var showFirst = [4].indexOf(val) >= 0;
            var showSecond = [3, 4, 5, 6, 8].indexOf(val) >= 0;
            $(idFirst).toggle(showFirst);
            $(idSecond).toggle(showSecond);
            !showFirst && $(idFirst + ' select').val(1).change();
            !showSecond && $(idSecond + ' select').val(1).change();
        };
    
        update2 = function(){
            var iterations = 5;
            if(howMuchYouWant){
                iterations = howMuchYouWant;
            }
            var idS=[];
            for(var i=0;i<iterations;i++){                    //Создаем массив ИДшников
                idS.push(idFirst+'el'+someAnotherNumberOfId);
                someAnotherNumberOfId+=1;
            }
            console.log(idS);
            var val = +this.value;
            var showFirst = [8].indexOf(val) >= 0;
            for(var i=0;i<iterations;i++){     //Переключаем на каждом .toggle(showFirst)
                $(idS[i]).toggle(showFirst);
                !showFirst && $(idS+' select').val(1).change();
            }
        }
        $(idThird).change(update1).change();
        $(idThird).change(update2).change();
    }
    var firstUpdate= new Update('#f_lr1gr2','#f_lr1grt','#lr1rt',1);
    var secondUpdate= new Update('#f_lr1gr2','#f_lr1grt','#sp1rt',1);
    
    
    firstUpdate();
    secondUpdate();

    Исправил очепятку
    Ответ написан
    Комментировать