Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.02.2014, 20:30
Новичок на форуме
Отправить личное сообщение для Slavarenik Посмотреть профиль Найти все сообщения от Slavarenik
 
Регистрация: 14.12.2013
Сообщений: 3

Reusable function подскажите
Всем привет. Недавно начал знакомится с javascript и DOM.
Просьба не кидаться камнями, еще нуб.
Имеется к примеру такая функция:

Код:
function descAction (element, duration) {
   console.log(element);
   var funcStr = 'descAction('+element+','+duration+')';
   var movement = setTimeout(funcStr, duration);
}
Допустим я применяю функцию на евент onmouseover, один раз показывает элемент, а дальше пишет:
Uncaught SyntaxError: Unexpected identifier

Кто может подсказать что я делаю не так и чего не понимаю, буду благодарен.
Ответить с цитированием
  #2 (permalink)  
Старый 17.02.2014, 21:11
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Не используй строку в качестве аргумента setTimeout!!!
Используй функцию.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 17.02.2014, 21:38
Новичок на форуме
Отправить личное сообщение для Slavarenik Посмотреть профиль Найти все сообщения от Slavarenik
 
Регистрация: 14.12.2013
Сообщений: 3

Так там, на сколько я знаю строка и должна быть.

Если делаю вот так:

Код:
function descAction (element, duration) {
   console.log(element);
   var movement = setTimeout(descAction(element, duration), duration);
}
То в консоли такая картина:
http://www.dropbox.com/sc/fn0odwi446wqhg4/czfMBmKna6
Ответить с цитированием
  #4 (permalink)  
Старый 17.02.2014, 22:02
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

setTimeout(function(){
    descAction(element, duration);
}, duration);
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 17.02.2014, 22:38
Новичок на форуме
Отправить личное сообщение для Slavarenik Посмотреть профиль Найти все сообщения от Slavarenik
 
Регистрация: 14.12.2013
Сообщений: 3

Благодарю все заработало, спасибо.
В учебнике показали дурной пример со строкой, вот и застопорился.
Тема закрыта.
Ответить с цитированием
  #6 (permalink)  
Старый 18.02.2014, 03:52
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Можно ещё так:

var movement = setTimeout(descAction.bind(null, element, duration), duration);


Но лучше юзать анонимную ф-цию.
Ответить с цитированием
  #7 (permalink)  
Старый 18.02.2014, 06:53
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Ruslan_xDD
Но лучше юзать анонимную ф-цию.
Не думаю что лучше. Просто bind нету в старых браузерах (типа IE8), что впрочем, решаемо (ES5-shim.js).
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как доступится к свойствам созданной коллекции? assd18 Backbone.js 8 01.12.2013 20:37
Подскажите по ООП Petja Общие вопросы Javascript 5 18.05.2013 18:17
Использование классов в JavaScript devote Ваши сайты и скрипты 70 01.02.2013 17:17
Календарь,формат даты день-месяц-год изменить на год-месяц-день tusha-kutusha Элементы интерфейса 0 07.05.2012 17:03
Object.predefinedProperties создает новый объект с назначенными getter'ами/setter'ами devote Ваши сайты и скрипты 13 06.03.2012 21:57