Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 19.08.2012, 22:30
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от LittlePony
А точек с запятыми где не хватает?
почти везде )

LittlePony, как же вы такие большие коды лепите, если не понимаете, что происходит
Давай мы поступим следующим образом, ты выложишь небольшой рабочий пример, который тебе не ясен.

пробуй так
paradiseBoom: function(){
	var self = this;
	var $happiness = $(self.el).children("li")
	var animateDuration = self.animateDuration
	var animateDelay = self.animateDelay
	function AddActiveMarker(index){
		var $cHappiness = $happiness.eq(index)
		if($cHappiness.size()==1){
			$("#eden").show()
			switch(index){
				case 0:
					$("#tree")
						.css({opacity:0,display:"block"})
						.animate({opacity:1},{duration:animateDuration})
					break
				case 1:
					$("#mrpostman")
						.css({opacity:0,display:"block"})
						.animate({opacity:1},{duration:animateDuration})
					break
				case 2:
					$("#bench")
						.css({opacity:0,display:"block"})
						.animate({opacity:1},{duration:animateDuration})
					break
			}
			$("<span class=activemarker />")
				.css({opacity:0})
				.appendTo($cHappiness).animate({opacity:1},{duration:animateDuration,complete:function(){
					if(self.state=="boom") setTimeout(function(){AddActiveMarker(index+1)},animateDelay)
				}})
		}
	}
	AddActiveMarker(0,self);
}

признаться, долго тупил, пытаясь понять, что происходит. melky, прав. Ситуация следующая (как я понял):
первый раз ты вызываешь метод paradiseBoom так: paradise.paradiseBoom. Здесь все нормально, this там правильный. Когда у тебя происходит это setTimeout(function(){AddActiveMarker(index+1,obj) },animateDelay), то this там window. Хотя это роли не играет

p.s.: это все на ночь глядя, так что на истину не претендую
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 19.08.2012 в 23:06.
Ответить с цитированием
  #12 (permalink)  
Старый 19.08.2012, 23:19
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от LittlePony Посмотреть сообщение
Здравствуйте.
Вопрос: что я не так делаю?
Кусочек кода, содержащий только значимое для вопроса:
var Paradise = {
	state: "inactive",
	paradiseLost: function(){
		function AddActiveMarker(index,obj){
			console.log(obj.state)
		}
		AddActiveMarker(0,this)
	}
}

свойство state успешно меняется другой функцией.
Значение этого свойства нужно использовать в функции AddActiveMarker().
Внутри функции paradiseLost() это свойство читается нормально, но во вложенную функцию передать не могу, получаю undefined.
Где чего недопонимаю?
Заранее спасибо.
короче, дорогая, ты нас с самого начала запутала
var Paradise = {
	state: "inactive",
	paradiseLost: function() {
		function AddActiveMarker( index, obj ) {
			alert( obj.state );
		}
		AddActiveMarker( 0, this );
	}
};

Paradise.paradiseLost();

твой пример рабочий. Ищи ошибку в другом месте, например, логике и/или таймаутах.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить доступ к функциям внутри $(document).ready ? oleg_barma jQuery 3 05.06.2012 20:56
Доступ к свойству объекта. Dimentr Общие вопросы Javascript 2 26.12.2011 16:23
Объявление метода внутри объекта JAVASCRIPt Golovastik Общие вопросы Javascript 4 07.03.2011 12:11
Обращение к элементу внутри метода .ajax() roma86 jQuery 2 19.03.2010 21:52
Как внутри класса вызвать метод из соседнего метода Shahurik Общие вопросы Javascript 2 13.11.2009 12:20