Jump to content
  • 0

Вопросы по Javascript, Jquery.


koderman
 Share

Question

Как склепать команду из символов?
Нужно собрать эту команду

audio.play();

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


    var audio1 = new Audio('musik.wav');

    var i = 1;

    "audio"+i+".play();"
 

Link to comment
Share on other sites

Recommended Posts

  • 0
var a = {};
Вчера написал небольшой фрагмент кода, вида

var obj = {    prop1: 'value1',    prop2: 'value2',    method1: function() {        // some actions    },    method2: function() {        // some actions    },    method3: function() {        // some actions    },    init: function() {        this.method1();        this.method2();        this.method3();    }};    obj.init();
И подумал, а зачем мне переменная, если я всего лишь вызываю метод инициализации?

В связи с чем вспомнил шаблон вообще без переменных :)

({    dom: {        window: window,        document: document    },    writeToConsole: function() {        console.log.apply(console, arguments);    },    showModalWindow: function() {        alert.apply(this.dom.window, arguments);    },    onClick: function(event) {        var msg = 'x=' + event.pageX + ', y=' + event.pageY;        this.writeToConsole(msg);        this.showModalWindow(msg);    },    init: function() {        this.dom.document.onclick = this.onClick.bind(this);    }}).init();
демо http://learn.javascript.ru/play/is4l8
Link to comment
Share on other sites

  • 0

Можете объяснить про jquery переменные? Не пойму в чем разница

http://jsfiddle.net/Zverushka/7PzQB/

var x = $(".bxslider");var $x = $(".bxslider");console.log(x);console.log($(x));console.log($x); 

Особенно не вижу разницы между x и $x. В консоли смотрю одинаково все.

Link to comment
Share on other sites

  • 0

В плане логики нет никакой разницы между x и $x. Насколько мне известно, в некоторых проектах просто существуют соглашения, предлагающие именовать переменные, в которых хранятся jquery-объекты (не знаю, насколько это правильный термин), используя префикс $. Таким образом если переменная имеет префикс $ (т. е. $variableName), то сразу становится понятно, что у нее можно вызывать методы jquery, например. Дело исключительно в наглядности, больше ни на что это не влияет.

var x = $(".bxslider");

Создали переменную x, в которую сохранили результат выборки по классу .bxslider

var $x = $(".bxslider");

Создали переменную $x, в которую сохранили результат выборки по классу .bxslider — от первого случая отличается только именем переменной.

console.log(x);

Вывели переменную x

console.log($(x));

Инициализировали jquery-объект, используя не имя класса, не ссылку на DOM-элемент, а уже существующий jquery-объект. Получили копию переменной x. Вывели ее.

console.log($x); 

Вывели переменную $x, в которой содержатся те же данные, что и в x.

  • Like 1
Link to comment
Share on other sites

  • 0

Как задать значение left меньше на 50 пикселей?
Не позицию -50 пикселей, а значение. Например если было left 200px то должно стать 150px.

Попробовал так

$(".gamer").animate({"left" : "-50px"});

Но так задаётся только позиция -50px.

Edited by koderman
Link to comment
Share on other sites

  • 0

При нажатии на стрелочки (Вправо, Влево) красный квадратик перемещается.

Почему функция перемещения срабатывает только один раз?
Например если я вправо нажимаю, потом влево, потом опять вправо но квадрат уже не перемещается.
http://jsfiddle.net/xLa9m/

Link to comment
Share on other sites

  • 0

Потому что после поочередного вызова функций у вашего блока .gamer оказываются указаны и right, и left, и ширина. Как это по-вашему должен отобразить браузер?

 

Может вы имели в виду что-то в этом роде? http://jsfiddle.net/8t4H8/

 

Здесь изменяется один и тот же стиль left, в зависимости от нажатой клавиши значение увеличивается или уменьшается.

Link to comment
Share on other sites

  • 0

Что делает такая конструкция?

console.log.apply()

console.log() Выводит в консоль браузера оповещения.

А это что делает? console.log.apply()

http://toster.ru/q/5846

 

 

 

Как вывести алерт при соприкосновении красного блока с зелёным?? Какое должно быть условие?

http://jsfiddle.net/xLa9m/1/

http://jsfiddle.net/xLa9m/8/

Edited by Yazon_Nile
Link to comment
Share on other sites

  • 0

Классно.

 

А зачем обнуление тут?
    var stepOffset = 0;

 

Зачем эта переменная нужна? isBusy = false;

 

 

Почему не возвращает расстояние от правого края? В самом конце дописал
http://jsfiddle.net/xLa9m/14/

Понимаю что от правого края будет лево + ширина. Но там всякие отступы марджин может случиться итп.

Edited by koderman
Link to comment
Share on other sites

  • 0

А зачем обнуление тут?

    var stepOffset = 0;

Для себя поставил. ЧТобы если нажали не влево/вправо блок анимировался в начало.

 

 

Зачем эта переменная нужна? isBusy = false;

Чтобы алерт выскакивал только раз за один виток анимации. 

Убери условие if(isBusy) return; и посмотри, что будет.

 

 

у вас не пашет, потому что проверка вызывается только в начале анимации. А не во время.

  • Like 1
Link to comment
Share on other sites

  • 0

Почему если я добавляю надпись ОДИН раз, а она выводится МНОГО раз. http://jsfiddle.net/xLa9m/22/
Срабатывание нужно немедленное, так что параметр complete не подойдёт.
Почему много раз вставляется текст?

Чем меньше duration, http://jsfiddle.net/xLa9m/24/ тем меньше надписей. Как исправить это?
Допустим я хочу длинный duration и только одно выполнение функции, а не кучу.

Link to comment
Share on other sites

  • 0

да ну. Я же вам курс по js читать не буду здесь:)
Это ведь базовые вещи.

 

Если очень коротко

 

Проверка на совпадение происходит в каждом шаге анимации. Соотв совпадений может быть много. Нам достаточно одного. Для этого при первом срабатывании условия ставим флаг, что мол все. Получили результат. Условие if(isBusy) return; после этого просто не пускает скрипт дальше. Пока isBusy  снова не станет false. А это случится уже после окончания анимации.

  • Like 1
Link to comment
Share on other sites

  • 0

А, понял. Классно придумали.
if(isBusy) return; выкидывает из функции после первого выполнения шага.
Спасибо)

 

————————--

 

Почему когда нажимаю на любую другую клавишу кроме Право, Лево, то перемещается в начальное положение? http://jsfiddle.net/xLa9m/25/
Даже если убрать var stepOffset = 0;

Edited by koderman
Link to comment
Share on other sites

  • 0

Доброго времени)

Во время разработки, в условиях изменчивой вёрстки использую следующую конструкцию для поиска элементов в родительском (опосредовано) контейнере:

$( this ).closest( контейнер ).find( искомыйЭлемент )

Насколько оптимален такой подход? Можно ли его оставлять в продакшене? Если нет, то хардкодить поиск элементов или заменить на более толковую конструкцию?

  • Like 1
Link to comment
Share on other sites

  • 0

Почему когда нажимаю на любую другую клавишу кроме Право, Лево, то перемещается в начальное положение? http://jsfiddle.net/xLa9m/25/

Даже если убрать var stepOffset = 0;

не совсем так.

Если убрать эту строчку. Получается переменную мы не обьявляем. Соотв дальше в switch задается глобальная переменная. И при последующих вызовах просто перезаписывается заново.

Сами проверьте любым способом)

  • Like 1
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy