Ответы пользователя по тегу JavaScript
  • Как сохранить объект в LocalStorage и при перезагрузке страницы сгенерировать этот объект?

    @heartdevil
    плыву как воздушный шарик
    При добавлении item-а, надо его просто передавать в качестве входного параметра

    addItemToLocalStorage(item)

    а внутри вы сначала делаете

    var storage = JSON.pare(sItem);

    Добавляете свой item

    storage.push(item)

    и опять в строку:

    sItem = JSON.stringify(Item);

    и в хранилище:

    localStorage.setItem("State",sItem);

    Код условный. Доработаете под свои нужды
    Ответ написан
    Комментировать
  • Как переписать эту jquery строку?

    @heartdevil
    плыву как воздушный шарик
    Может лучше почитать как создавать события на javascript?

    Пример
    Ответ написан
  • Существуют ли рекомендации(техники, подходы) быстрого поиска ошибок в коде?

    @heartdevil
    плыву как воздушный шарик
    То, что много времени тратится на понимание чужого кого -- нормально. Со временем вы все равно будете быстрее править баги или дорабатывать систему. Если же у вас совсем нет сдвигов, значит у вас слабая база. Вам надо больше читать и разбирать код.
    Ответ написан
    Комментировать
  • Что значит этот код(получение даты, датапикер)?

    @heartdevil
    плыву как воздушный шарик
    Привет.

    Насколько понял.
    Работает так:

    8. Объявляется вечный цикл с шагом 10.
    9. У даты своего дня рождения мы устанавливаем новый год рождения, который увеличивается с каждой итерацией на 10 лет.
    10. теперь от текущей даты мы сначала отнимаем измененную выше дату рождения (увеличенную на 10 лет) и потом всю эту шнягу делим на 86400000 мс (сколько миллисекунд в одном дне), получив разницу в днях.
    11. Сравниваем полученную разницу с нулем. Если больше, тогда выводим какой юбилей и сколько дней до него. Затем выходим из цикла. Иначе возвращаемся повторяем цикл.
    Ответ написан
    6 комментариев
  • Где есть нормальный regex для валидации телефонов?

    @heartdevil
    плыву как воздушный шарик
    Привет.

    Лучше используйте плагин для внедрения маски.

    Можно вот это. Или другое загуглить.

    Тогда у вас в поле при наведении будет отображаться маска типа:

    (___) ___-____

    И заполняться все цифры будут строго по маске.

    Либо можно просто разделить тремя текстовыми полями заполнение телефона, ограничив только вводом цифр.
    Ответ написан
    Комментировать
  • Table в html/css?

    @heartdevil
    плыву как воздушный шарик
    Привет.

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

    2)Можете попробовать использовать селектор :nth-child(n)
    Но вам придется разграничить отдельные tr и td в таблице, присвоив им id, чтобы упрявлять выделением отдельных блоков таблицы.

    3) Самый долгий и муторный -- это присвоить уникальные id для всех tr (и для некоторых td) которые вы хотите выделять в таблице. Тогда у вас будут идентификаторы доступа к которым вы сможете задать стили.
    Ответ написан
  • Как сделать расчёт цены товара на js???

    @heartdevil
    плыву как воздушный шарик
    Привет.

    Используйте change событие у текстового поля.

    $("#inputtextid").change(function(){
        alert("The text has been changed.");
    });

    1) Читаете цену (где она у вас хранится) и переводите в число (parseInt).
    2) В событии change у текстового поля количества товара читаете введенное число и тоже переводите в число.
    3) Умножаете оба числа).
    4) Выводите в заголовке.

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

    @heartdevil
    плыву как воздушный шарик
    Попробуйте использовать этот метод.

    Алгоритм примерно такой. 1) Стоп любой соответствующей анимации. 2) Запуск анимации.

    stop method
    Ответ написан
    2 комментария
  • Как правильно использовать AJAX?

    @heartdevil
    плыву как воздушный шарик
    Смотрите в сторону таких библиотек как knockout.js, angular.js и другие. Вопрос, конечно, про аякс, но используя такие библиотеки вы принципиально будете создавать, грубо говоря, "почти правильный" фронтенд, если ознакомитесь со схожими с вашим случаем примерами.
    Ответ написан
    Комментировать
  • Почему при авто заполнении из объекта возвращается данные [object obgect]?

    @heartdevil
    плыву как воздушный шарик
    А зачем вы такую неудобную структуру данных используете?

    1) У вас в объявлении структуры ошибка. Нет закрывающей квадратной скобки.
    2) Даже если структура будет валидная, Она будет содержать всего один объект data. А автокомплит принимает массив данных. То есть нужно сразу подсовывать ему массив.
    3) Внутри data у вас опят же всего один элемент allfilms. Вам, грубо говоря, нужно вот так подсунуть сорс для автокомплита -- projects[0].data.allfilms. Не гарантирую, что сработает. Просто предположение.
    4) Вы везде в актокомплите вот так обращаетесь к источнику -- item.data.allBrand. У вас же нет allBrand нигде. Или я чего-то не понял. Я вижу только allfilms.
    5)У каждого объекта item или ul в анонимных методах автокомплита имеются свойства типа label и value. Вот есл вы все правильно сделаете, то в item.label, либо в ul.label у вас должно быть название фильма.
    Ответ написан
    Комментировать
  • Стоит ли сейчас изучать JQuery?

    @heartdevil
    плыву как воздушный шарик
    Это он зря так говорит. А аргументы он приводит в свою пользу?

    Если хотите разбираться в чужом коде, то учить обязательно. Если вы будете абсолютно все писать сами с нуля (типа менюшки, слайдеры, lightbox-ы, валидацию форм, другой кастомный клиентский функционал) и никогда не обращаться к сторонним плагинам и библиотекам и никогда не подсматривать или работать с чужим кодом, то -- да. Можете забить на jquery.

    Я вам больше скажу). Вам кроме jquery надо будет еще кучу других библиотек для различных целей изучить)). Так что привыкайте.
    Ответ написан
    2 комментария
  • Почему не получается добавить заголовки Access-Control-Allow-Origin?

    @heartdevil
    плыву как воздушный шарик
    А вы вот так добавляете?

    header('Access-Control-Allow-Origin: *');
    header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
    Ответ написан
  • Как лучше вызывать?

    @heartdevil
    плыву как воздушный шарик
    Привет.

    Доступ к элементу по id -- это самый быстрый доступ. Если есть возможность использовать id, то всегда используйте.

    onclick как атрибут для html элемента действительно уходит в прошлое, но onclick/click как событие никто еще не отменял.

    Если вы работаете с чистым javascript, то вам в любом случае придется подписываться на это событие.

    К примеру, вот так:

    var el = document.getElementById("id");
    el.addEventListener("click", modifyText, false);


    Если вы используете jquery, то смысла использовать чистый javascript мало, так как есть более абстрактные методы типа

    click() - Bind an event handler to the "click" JavaScript event, or trigger that event on an element. This method is a shortcut for .on( "click", handler ) in the first two variations, and .trigger( "click" ) in the third. The click event is sent to an element when the mouse pointer is over the element, and the mouse button is pressed and released.

    on() - Attach an event handler function for one or more events to the selected elements

    Из этих двух выбирайте, согласно описанию, тот, который более подходит.

    Если вы используете какую-то другую библиотеку, то используйте методы привязки обработчиков событий из этой библиотеки, если таковые имеются.

    Но на самом деле, все зависит от задачи. Вы задали слишком общий вопрос. В данном случае преимущества одного способа над другим несущественны. Выбирайте любой.
    Ответ написан
    5 комментариев
  • В чем причина сбоя работы слайдера после смены темы WordPress?

    @heartdevil
    плыву как воздушный шарик
    Привет.

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

    @heartdevil
    плыву как воздушный шарик
    Привет.

    А вручную у вас lightbox вызывать нельзя?

    То есть типа так сделать

    $('.wrap')
    .on('click', function() {
        $(this).find('.button').click();
      })
    .on('click', '.button', function(e) {
        //Условно
       $('#lightbox').show();
        e.stopPropagation();
      })
    Ответ написан
    Комментировать
  • Как просканировать значения в таблице?

    @heartdevil
    плыву как воздушный шарик
    Привет

    Вам надо указать у таблицы id, к примеру, id="mytable", затем по нему построить селектор.
    $("#mytable tr").each(function() {
     var td = $(this).find("td:eq(1)").html();
    };
    Ответ написан
    1 комментарий
  • Как передать переменную из одной функции в ajax запрос?

    @heartdevil
    плыву как воздушный шарик
    Просто запомните где-нибудь эти координаты (к примеру, в $("#id").data("значение")), а из аякс-функции читайте.
    Ответ написан
    Комментировать
  • Как фильтровать элемент isotop созданный через ajax?

    @heartdevil
    плыву как воздушный шарик
    Привет.

    Проверьте вот этот параметр.

    filter: selector,

    у вас в selector точно данные попадают?

    Вообще говоря, попробуйте вот этот код

    $('.works').isotope({
                    filter: "тут сразу задайте класс для фильтра изотопа",
                });


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

    Немного доработал ваш код.

    Попробуйте так

    $(document).ready(function() {
            var $container = $('#movieBox');
    		var cache = $container.html();
    		
            $container.isotope({
                itemSelector: '.work'
            });
    
            $('#filter a').click(function() {
      
                $('#filter a').removeClass('current');
                $(this).addClass('current');
                var selector = $(this).attr('data-filter');
    
                $.ajax({
                    cache: false,
                    url: 'test2.php?filter=' + selector,
                    success: function(data) {
    					
    					// HERE YOU CAN DO SOMETHING WITH YOUR DATA
    					
    					
    					
    					//Collecting every new isotope in cache
    					cache += data;
    
    					//Making our container clean by destroying the isotope functionality
    					$container.isotope('destroy');
    
    					//Rewriting our new collection of isotopes to our container
    					$container.html(cache);
    
    					//Set new instance of the isotope functionaly in our container using last clicked filter
    					$container.isotope({
    						itemSelector: '.work',
    						filter: selector
    					});					
    				}
                    });
    
    			$container.isotope({
                    filter: selector,
                    animationOptions: {
                        duration: 1000,
                        easing: 'easeOutQuart',
                        queue: false
                    }
                });
                return false;
            });
    
        });
    </script>
    Ответ написан
    9 комментариев
  • Как заполнить window.data данными?

    @heartdevil
    плыву как воздушный шарик
    Привет

    А в вашем случае у window есть data?

    Или может вы это имели ввиду:

    $(window).data(сюда кладем объект)?
    Ответ написан
    Комментировать
  • Как написать такую конструкцию на JS?

    @heartdevil
    плыву как воздушный шарик
    Привет.

    У вас в html-структуре повторяются id у элементов. Такого нельзя делать если вы работаете с этой структурой в js.
    Каждый элемент должен быть уникальным. Уникальность задается по id. Это не касается классов.

    для того, чтобы найти в dom ваш контейнер используйте это

    var container = document.getElementById("container");


    для того, чтобы найти все дочерние элементы у родительского элемента используйте это

    var children = container.getElementsByTagName("div");


    чтобы задать класс у элемента используйте свойство className;

    container.className = "active";

    для задания класса группе элементов нужен цикл.

    for (var i = 0; i < children.length; i++)
    {
    children[i].className = "s-active";
    }
    Ответ написан