• Как убрать лишний символ?

    NikitaTratorov
    @NikitaTratorov
    CTO
    Это не тире, а подчеркивание ссылки:
    .carouselSimple__linkImg {
    	display: block;
    	height: 100%;
    /* 	background: #369; */
      text-decoration: none;  /* добавьте вот эту строку */
    }
    Ответ написан
    Комментировать
  • Как запустить iframe после открытия popup?

    Pshkll
    @Pshkll
    Youtube API

    function onPlayerReady(event) {
      event.target.playVideo();
    }
    Ответ написан
    Комментировать
  • Правильно ли написана функция?

    mattedev
    @mattedev
    web developer
    ух, а на css почему не сделать?
    Ответ написан
    Комментировать
  • Правильно ли написана функция?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В дополнение к MaxKorz

    - устраните дублирование
    - то что вы там делаете в windoe resize - это лучше делать через CSS. А если так - то никакого хардкода значений в пикселях в JS уже не будет.
    - не стоит завязываться на стили (float), разруливайте все модификаторами (судя по селекторам у вас там БЭМ)

    Словом выносите почти все в CSS. Анимации все, стили и т.д. В итоге у вас останутся только классы.
    Ответ написан
    3 комментария
  • А как вы именуете классы в css?

    UDAV99
    @UDAV99
    web программист, верстальщик
    Я обычно задаю имя общему блоку, а элементам внутри него присваиваю короткие имена.

    <div class="testBigBoxBlock">
      <div class="title">Заголовок</div>
      <div class="desc">Описание</div>
    </div>
    
    <div class="testSuperBigBoxBlockAndLinesMind">
      <div class="title">Заголовок</div>
      <div class="desc">Описание</div>
    </div>
    Ответ написан
    7 комментариев
  • Почему такая конструкция функции работает?

    keslo
    @keslo
    Тут получается работа с замыканиями:
    (Function) /* вызывается с параметрами */ ('n', 'return n;')
    (Function)('n', 'return n;')  /* вызывается в свою очередь с */ (n)
    
    /* Запись */ (Function) /* эквивалетна */ new Function
    Ответ написан
    Комментировать
  • Почему такая конструкция функции работает?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Ничего сложного, на самом деле: при вызове x создаётся анонимная функция, которая сразу же выполняется с аргументом, переданным в x.

    (Function)('n', 'return n;')(n)
    эквивалентно этому:
    new Function('n', 'return n;')(n)
    и вот этому:
    (function (a) {return a;})(n)

    Документация по объекту Function.
    Ответ написан
    2 комментария
  • Почему такая конструкция функции работает?

    mannaro
    @mannaro Куратор тега JavaScript
    Умею профессионально гуглить
    Это какое-то дикое определение фабрики. Точнее, недофабрики. Код, эквивалентный этому:
    function x(n) {
      var fn = function(n) { return n };
      return fn(n);
    }
    
    // после упрощения
    function y(n) {
      return n;
    }
    var result = x(1);
    Ответ написан
    Комментировать
  • Перенос строки при помощи br в теге option работать не будет?

    @GreatRash
    Перенос строки в <option> вообще никак не сделать. Только кастомный селект если юзать.
    Ответ написан
    Комментировать
  • Где почитать про проверки в Javascript?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Ответ написан
    Комментировать
  • Как правильно сверстать список?

    gr1mm3r
    @gr1mm3r
    50% ответа в правильном вопросе. Остальное мануал.
    Пример через list-style-images
    <ul>
    <li><b>Вклад "Рантье"</b><br/>
    Кредит Европа Банк</li>
    <li><b>Вклад "Зимний специальный"</b><br/>
    Кредит Европа Банк</li>
    <li><b>Вклад "Выгодный"</b><br/>
    Банк РСБ</li>
    </ul>


    body{color:#999; font-family:tahoma;}
    ul{list-style-image: url(http://htmlbook.ru/themes/hb/img/icon_yes.png);}
    li b{color:#7085a0;font-size:12px;}
    li {font-size:11px; padding-bottom:5px;}
    Ответ написан
    3 комментария
  • Как правильно сверстать список?

    Комментировать
  • Как правильно сверстать список?

    @mletov
    Вам обязательно через :before/ :after делать?

    Технически все просто:
    ul, li - display block, галку не повторяющимся фоном для li, задать для li padding-left, заголовок и пояснения обрамить в отдельные span и задать им стили

    Если есть тонкости семантики, то знатоки меня подправят

    <ul>
    <li>
    <span>1111</span>
    <span>2222</span>
    </li>
    <li>
    <span>3333</span>
    <span>4444</span>
    </li>
    </ul>
    Ответ написан
    Комментировать
  • Как проверить каким образом вызывается функция?

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

    lazalu68
    @lazalu68
    Salmon
    "Как выучить js творческому человеку?"

    Представления не имею)

    "Код выполняется построчно и не перескакивает с строки на строку?"

    Код выполняется в порядке появления инструкций. Упрощенно: движок разбирает исходный код, проверяет его на соответствие синтаксису, и если все Ок, то выполняет инструкции в том порядке, в каком они были описаны. Например:
    var a = 5;
    
    var test = function() {
    	var b = 192847;
    
    	var sum = a + b;
    
    	alert('a + b = ' + sum);
    };
    
    test();

    Первая инструкция это "var a = 5;", она сложная, т.к. состоит из двух инструкций: одна это объявление переменной a, другая - присвоение переменной a значения 5. Если разделить эту сложную инструкцию на две элементарные, то получится так:
    var a;
    
    a = 5;

    Далее. Вторая инструкция в моем коде это "var test = function() { var b = 192847; var sum = a + b; alert('a + b = ' + sum); };". Она тоже сложная, порядок выполнения такой:

    1. Объявление переменной test,
    2. Присвоение переменной test значения "function() { var b = 192847; var sum = a + b; alert('a + b = ' + sum); };", (на самом деле в переменной test будет лежать ссылка на эту функцию, но мне кажется, что это пока можно пропустить)

    Все инструкции внутри этой функции будут выполняться только тогда, когда эта функция будет вызвана посредством обращения к переменной, в которой она сохранена, с явным указанием передаваемых аргументов (даже если ни одного аргумента не будет передано). Следующая инструкция в моем коде как раз это и будет делать - вызывать функцию test:
    test();
    test - это название переменной, в которой лежит функция, а в скобках указаны аргументы, которые мы передаем функции, то есть никаких. Функция test содержит такие инструкции:
    var b = 192847;
    
    var sum = a + b;
    
    alert('a + b = ' + sum);

    Выполняться эти инструкции будет так, опишу в элементарных инструкциях:

    1. var b; - объявление переменной b,
    2. b = 192847; - присвоение переменной b значения 192847,
    3. var sum; - объявление переменной sum,
    4. sum = a + b; - присвоение переменной sum значения, равного сумме значений, которые сохранены в переменных a и b, то есть 5 + 192847 = 192852,
    5. alert('a + b = ' + sum); - вызов функции alert и передача этой функции единственного аргумента 'a + b = ' + sum, который равен сумме строки 'a + b = ' и числа сохраненного в переменной sum. В JS можно прибавить строку к числу, потому что в этом случае число будет принудительно приведено к строке, таким образом произойдет объединение строк 'a + b = ' и '192852'. То есть эта инструкция вызывает функцию alert и передает ей аргумент 'a + b = 192852'. Функция alert выводит переданные ей аргументы в диалоговом окне в браузере, то есть вызов alert('a + b = ' + sum); покажет пользователю диалоговое окошке с текстом 'a + b = 192852'.

    Посмотрите еще раз на пример. Соберем вместе все элементарные инструкции, выполняемые им:
    var a;
    
    a = 5;
    
    var test;
    
    test = function() {	var b = 192847; var sum = a + b; alert('a + b = ' + sum); };
    
    // выполнение следующих инструкций инициировано вызовом функции test()
    
    var b;
    
    b = 192847;
    
    var sum;
    
    sum = a + b;
    
    alert('a + b = ' + sum);

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

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

    "Если что то будет не по синтаксису то будет ошибка?"

    Верно, любое несоответствие синтаксису вызовет ошибку. Возьмем наш же пример:
    var a = 5;
    var test = function() {
    	var b = 192847;
    	var sum = a + b;
    	alert('a + b = ' + sum);
    test();

    В этом примере я намеренно пропустил символ "}", который показал бы движку (который выполняет код JS), что инструкция объявления функции (начавшаяся на второй строке) закончена.
    При выполнении этого кода появляется такая ошибка:

    "SyntaxError: missing } after function body"

    Поскольку проверка синтаксиса происходит до выполнения кода, даже синтаксически правильно описанная инструкция var a = 5; не была выполнена, несмотря на то, что шла перед ошибочной инструкцией.

    "Как можно манипулировать классом lowPosition которого нет?"

    Ну, это можно делать так же, как можно на листочке бумаги рисовать несуществующих животных) Я так понял, речь об этой части кода: _block.toggleClass('lowPosition');
    Метод .toggleClass('someClass') делает вот что: проверяет, имеет ли элемент класс 'someClass', и если элемент имеет класс 'someClass', то убирает этот класс, а если не имеет, то добавляет к элементу этот класс. Список классов, которые имеет элемент, описаны просто строкой: элемент <div class="container fluid"></div> имеет классы "container" и "fluid", а элемент <a href="example.com">example</a> так же как элемент <p class="">some paragraph</p> не имеет классов. Поэтому чтобы "манипулировать классом lowPosition которого нет", достаточно добавить строку "lowPosition" к строке с классами элемента. Например, если мы хотим добавить к элементу <div class="container fluid"></div>, класс "lowPosition", то в результате у нас получится такой элемент: <div class="container fluid lowPosition"></div>

    ".hasClass функция которая проверяет наличие класса, допустим. Мне обязательно это делать?"

    Ну код это же не черная магия какая-нибудь, код выполняет определенную цель, и для того чтоб ее достигнуть, нужно совершить определенные действия. Вот ваш код например:
    $(document).ready(function () {
    
        $('.menu-trigger').click(function () {
            $('nav ul').slideToggle(500);
        }); 
    
        $(window).resize(function () {
            if ($(window).width() > 600) {
                $('nav ul').removeAttr('style');
            }
        }); 
    
    	var _menu = $("#menu");
    	var _block = $("#block");
    
    	_menu.click(function () {
    	    _block.toggleClass('lowPosition');
    	    var nextpos = _block.hasClass('lowPosition') ? '10%' : '4%';
    	    _block.animate({
    	        'bottom': nextpos
    	    }, 300);
    	});
    
    });

    Это одна длинная инструкция. Тут происходит вот что: метод .ready() принимает аргументом функцию, которую он выполнит сразу же по рендеру (отрисовке) документа. Давайте сразу будем обсуждать ту часть этой функции, которая начинается с инструкции "var _menu = $("#menu");". В ней происходит вот что:

    1. var _menu = $("#menu"); - объявляется переменная _menu, которой присваивается ссылка на элемент #menu,
    2. var _block = $("#block"); - объявляется переменная _block, которой присваивается ссылка на элемент #menu,
    3. _menu.click( function() {} ); (инструкции внутри функции опущены) - вызывается метод .click(), который принимает аргументом функцию function() {}. Метод .click( function() {} ) "связывает" некоторые события, происходящие в браузере, с функциями, которые должны быть выполнены, когда эти события произойдут, а именно: функция function() {} будет выполнена, когда для элемента _menu произойдет событие, то есть когда пользователь кликнет на него.

    А теперь по инструкциям внутри этой функции. Когда пользователь кликает на элемент _menu происходит следующее:

    1. _block.toggleClass('lowPosition'); - если элемент _block имеет класс 'lowPosition', то этот класс с него убирается, а если не имеет - добавляется,
    2. var nextpos = _block.hasClass('lowPosition') ? '10%' : '4%'; - объявляется переменная nextpos, которой присваивается значение '10%' если элемент _block имеет класс 'lowPosition', или значение '4%' если элемент _block не имеет класс 'lowPosition',
    3. _block.animate({ 'bottom': nextpos }, 300); - метод .animate() принимает аргументом объект с необходимыми для анимации свойствами и длительность анимации в миллисекундах, (в результате свойство 'bottom' элемента _block за 300 миллисекунд примет достаточное количество промежуточных значений, чтобы пользователю этот переход показался плавным. Например, если изначально свойство 'bottom' имело значение '4%', и мы в первом аргументе метода .animate() задали конечное значение '10%', и если предположить что за 300 миллисекунд метод .animate() анимирует 6 кадров, то свойство 'bottom' будет принимать такие значения, начиная с исходного и заканчивая тем, которое задано в первом аргументе для метода .animate(): 4%, 5%, 6%, 7%, 8%, 9%, 10%. Через 50 миллисекунд после начала анимации свойство будет равно 5%, через 100 - 6, и так далее).

    ...
    Ответ написан
    1 комментарий
  • Как выучить js творческому человеку?

    wielski
    @wielski
    ✔ Совет: Вам помогли? Отметьте ответы решением.
    Читайте книжки.
    Практически любой язык программирования никак не связан с математикой. Вам не обязательно иметь степень магистра, чтобы его понимать. Главное развить в себе логику, и понимание того, как все работает.

    • Возьмите любую книжку по душе, в течении первых 2-3 глав поймете что такое переменные, функции, объекты.
    • Попробуйте на практике минимальные конструкции, чтобы понять принцип их работы.
    • Не бойтесь экспериментов - ничего не испортите.
    • Не отчаивайтесь в случае ошибок - лучше погуглилить и исправить самому, чем бежать на тостер. Будьте уверены - такие же тривиальные проблемы до вас случались как минимум у сотни человек.


    Удачи.
    По вашему вопросу с примерами кода помочь не смогу, опять таки из-за того, что вы не совсем понимаете что происходит внутри браузера. Книжки это лучше разжуют.
    Ответ написан
    3 комментария
  • Почему 'opacity': 'toggle' не работает?

    thewind
    @thewind
    php программист, front / backend developer
    в методе .animate в качестве css используется набор пар "свойство:значение". Метод будет изменять текущие значения указанных свойств в сторону переданных в каждой паре.

    А в вашем пример свойство top должно получить итоговое значение 'toggle', что неверно.

    PS псевдо-алгоритм .toggle() так работать не будет.
    Ответ написан
    1 комментарий
  • Какой вариант правильнее?

    @nikosias
    первый вариант можно сделать
    (function(){
    function someFunction(){
    //some code
    }
    $(document).ready(someFunction);
    })();

    Второй вариант только если вы хотите замкнуть функцию в области видимости $(document).ready(function(){
    ...
    });
    Ответ написан
    Комментировать