koderman Posted April 7, 2014 Report Share Posted April 7, 2014 Как склепать команду из символов?Нужно собрать эту командуaudio.play();из строковых значений и чтобы потом эта команда запустилась.Пробовал так, не получилось, хотя вроде всё правильно? var audio1 = new Audio('musik.wav'); var i = 1; "audio"+i+".play();" Link to comment Share on other sites More sharing options...
0 Николя223 Posted April 19, 2014 Report Share Posted April 19, 2014 Какой лучше серверный язык изучать? вы сначала с яваскриптом разберитесь) Link to comment Share on other sites More sharing options...
0 koderman Posted April 19, 2014 Author Report Share Posted April 19, 2014 Ну это на будущее хотел узнать. ) Link to comment Share on other sites More sharing options...
0 nerv Posted April 19, 2014 Report Share Posted April 19, 2014 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 More sharing options...
0 koderman Posted April 19, 2014 Author Report Share Posted April 19, 2014 Что делается тут? this.onClick.bind(this);При клике должно выполняться это this.onClick.bind(this);Это значит так dom.onClick.bind(dom);Зачем dom передаётся в метод bind ? Link to comment Share on other sites More sharing options...
0 koderman Posted April 20, 2014 Author Report Share Posted April 20, 2014 Что этим кодом делается?.load('foo.php?item=' + $(this).attr('id'));http://habrahabr.ru/post/111290/ Link to comment Share on other sites More sharing options...
0 Zverushka Posted April 20, 2014 Report Share Posted April 20, 2014 Можете объяснить про 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 More sharing options...
0 klierik Posted April 20, 2014 Report Share Posted April 20, 2014 @Zverushka, на выходе никакой разницы. ты одно и тоже описываешь по-разному, всего-то.все переменные имеют значение $(".bxslider") 1 Link to comment Share on other sites More sharing options...
0 rash Posted April 20, 2014 Report Share Posted April 20, 2014 В плане логики нет никакой разницы между x и $x. Насколько мне известно, в некоторых проектах просто существуют соглашения, предлагающие именовать переменные, в которых хранятся jquery-объекты (не знаю, насколько это правильный термин), используя префикс $. Таким образом если переменная имеет префикс $ (т. е. $variableName), то сразу становится понятно, что у нее можно вызывать методы jquery, например. Дело исключительно в наглядности, больше ни на что это не влияет.var x = $(".bxslider");Создали переменную x, в которую сохранили результат выборки по классу .bxslidervar $x = $(".bxslider");Создали переменную $x, в которую сохранили результат выборки по классу .bxslider — от первого случая отличается только именем переменной.console.log(x);Вывели переменную xconsole.log($(x));Инициализировали jquery-объект, используя не имя класса, не ссылку на DOM-элемент, а уже существующий jquery-объект. Получили копию переменной x. Вывели ее.console.log($x); Вывели переменную $x, в которой содержатся те же данные, что и в x. 1 Link to comment Share on other sites More sharing options...
0 koderman Posted April 21, 2014 Author Report Share Posted April 21, 2014 (edited) Как задать значение left меньше на 50 пикселей?Не позицию -50 пикселей, а значение. Например если было left 200px то должно стать 150px.Попробовал так$(".gamer").animate({"left" : "-50px"});Но так задаётся только позиция -50px. Edited April 21, 2014 by koderman Link to comment Share on other sites More sharing options...
0 mishka Posted April 21, 2014 Report Share Posted April 21, 2014 $(".gamer").animate({"left" : "-=50px"}); Link to comment Share on other sites More sharing options...
0 koderman Posted April 21, 2014 Author Report Share Posted April 21, 2014 При нажатии на стрелочки (Вправо, Влево) красный квадратик перемещается.Почему функция перемещения срабатывает только один раз?Например если я вправо нажимаю, потом влево, потом опять вправо но квадрат уже не перемещается.http://jsfiddle.net/xLa9m/ Link to comment Share on other sites More sharing options...
0 rash Posted April 21, 2014 Report Share Posted April 21, 2014 Потому что после поочередного вызова функций у вашего блока .gamer оказываются указаны и right, и left, и ширина. Как это по-вашему должен отобразить браузер? Может вы имели в виду что-то в этом роде? http://jsfiddle.net/8t4H8/ Здесь изменяется один и тот же стиль left, в зависимости от нажатой клавиши значение увеличивается или уменьшается. Link to comment Share on other sites More sharing options...
0 koderman Posted April 22, 2014 Author Report Share Posted April 22, 2014 Что делает такая конструкция?console.log.apply()console.log() Выводит в консоль браузера оповещения.А это что делает? console.log.apply() Link to comment Share on other sites More sharing options...
0 koderman Posted April 22, 2014 Author Report Share Posted April 22, 2014 Как вывести алерт при соприкосновении красного блока с зелёным?? Какое должно быть условие?http://jsfiddle.net/xLa9m/1/ Link to comment Share on other sites More sharing options...
0 Yazon_Nile Posted April 22, 2014 Report Share Posted April 22, 2014 (edited) Что делает такая конструкция?console.log.apply()console.log() Выводит в консоль браузера оповещения.А это что делает? console.log.apply()http://toster.ru/q/5846 Как вывести алерт при соприкосновении красного блока с зелёным?? Какое должно быть условие?http://jsfiddle.net/xLa9m/1/http://jsfiddle.net/xLa9m/8/ Edited April 22, 2014 by Yazon_Nile Link to comment Share on other sites More sharing options...
0 koderman Posted April 22, 2014 Author Report Share Posted April 22, 2014 (edited) Классно. А зачем обнуление тут? var stepOffset = 0; Зачем эта переменная нужна? isBusy = false; Почему не возвращает расстояние от правого края? В самом конце дописалhttp://jsfiddle.net/xLa9m/14/Понимаю что от правого края будет лево + ширина. Но там всякие отступы марджин может случиться итп. Edited April 22, 2014 by koderman Link to comment Share on other sites More sharing options...
0 koderman Posted April 22, 2014 Author Report Share Posted April 22, 2014 Я сделал что то подобное. Но почему то неправильно работает.При соприкосновении алерт не вылетает. Вылетает только тогда когда назад нажмёшь.http://jsfiddle.net/xLa9m/16/ Link to comment Share on other sites More sharing options...
0 Yazon_Nile Posted April 23, 2014 Report Share Posted April 23, 2014 А зачем обнуление тут? var stepOffset = 0;Для себя поставил. ЧТобы если нажали не влево/вправо блок анимировался в начало. Зачем эта переменная нужна? isBusy = false; Чтобы алерт выскакивал только раз за один виток анимации. Убери условие if(isBusy) return; и посмотри, что будет. у вас не пашет, потому что проверка вызывается только в начале анимации. А не во время. 1 Link to comment Share on other sites More sharing options...
0 koderman Posted April 23, 2014 Author Report Share Posted April 23, 2014 Почему если я добавляю надпись ОДИН раз, а она выводится МНОГО раз. http://jsfiddle.net/xLa9m/22/Срабатывание нужно немедленное, так что параметр complete не подойдёт.Почему много раз вставляется текст?Чем меньше duration, http://jsfiddle.net/xLa9m/24/ тем меньше надписей. Как исправить это? Допустим я хочу длинный duration и только одно выполнение функции, а не кучу. Link to comment Share on other sites More sharing options...
0 Yazon_Nile Posted April 23, 2014 Report Share Posted April 23, 2014 http://jsfiddle.net/xLa9m/25/потому что анимация - это многоразовое использование setTimeout 1 Link to comment Share on other sites More sharing options...
0 koderman Posted April 23, 2014 Author Report Share Posted April 23, 2014 Всё дело значит в этом if(isBusy) return;Можете объяснить как это срабатывает?Если isBusy равняется true что дальше происходит? return что делает? Прекращается выполнение функции? Link to comment Share on other sites More sharing options...
0 Yazon_Nile Posted April 23, 2014 Report Share Posted April 23, 2014 да ну. Я же вам курс по js читать не буду здесьЭто ведь базовые вещи. Если очень коротко Проверка на совпадение происходит в каждом шаге анимации. Соотв совпадений может быть много. Нам достаточно одного. Для этого при первом срабатывании условия ставим флаг, что мол все. Получили результат. Условие if(isBusy) return; после этого просто не пускает скрипт дальше. Пока isBusy снова не станет false. А это случится уже после окончания анимации. 1 Link to comment Share on other sites More sharing options...
0 koderman Posted April 23, 2014 Author Report Share Posted April 23, 2014 (edited) А, понял. Классно придумали.if(isBusy) return; выкидывает из функции после первого выполнения шага.Спасибо) ————————-- Почему когда нажимаю на любую другую клавишу кроме Право, Лево, то перемещается в начальное положение? http://jsfiddle.net/xLa9m/25/Даже если убрать var stepOffset = 0; Edited April 23, 2014 by koderman Link to comment Share on other sites More sharing options...
0 konfuji Posted April 23, 2014 Report Share Posted April 23, 2014 Доброго времени)Во время разработки, в условиях изменчивой вёрстки использую следующую конструкцию для поиска элементов в родительском (опосредовано) контейнере:$( this ).closest( контейнер ).find( искомыйЭлемент )Насколько оптимален такой подход? Можно ли его оставлять в продакшене? Если нет, то хардкодить поиск элементов или заменить на более толковую конструкцию? 1 Link to comment Share on other sites More sharing options...
0 Yazon_Nile Posted April 23, 2014 Report Share Posted April 23, 2014 Почему когда нажимаю на любую другую клавишу кроме Право, Лево, то перемещается в начальное положение? http://jsfiddle.net/xLa9m/25/Даже если убрать var stepOffset = 0;не совсем так.Если убрать эту строчку. Получается переменную мы не обьявляем. Соотв дальше в switch задается глобальная переменная. И при последующих вызовах просто перезаписывается заново.Сами проверьте любым способом) 1 Link to comment Share on other sites More sharing options...
Question
koderman
Как склепать команду из символов?
Нужно собрать эту команду
audio.play();
из строковых значений и чтобы потом эта команда запустилась.
Пробовал так, не получилось, хотя вроде всё правильно?
var audio1 = new Audio('musik.wav');
var i = 1;
"audio"+i+".play();"
Link to comment
Share on other sites
Top Posters For This Question
11
7
10
45
Popular Days
Apr 23
15
Apr 9
14
Apr 8
13
Apr 7
7
Top Posters For This Question
Great Rash 11 posts
Yazon_Nile 7 posts
Николя223 10 posts
koderman 45 posts
Popular Days
Apr 23 2014
15 posts
Apr 9 2014
14 posts
Apr 8 2014
13 posts
Apr 7 2014
7 posts
Popular Posts
koderman
—
koderman
nerv
Вспомнил, откуда "знаю" koderman'а http://javascript.ru/forum/misc/45653-voprosy-po-javascript-2.html#post301989 DANGER! Ученики Попова среди нас! http://javascript.ru/forum/study/45244-nachinayush
88 answers to this question
Recommended Posts