Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.09.2011, 14:48
Новичок на форуме
Отправить личное сообщение для Gasheck Посмотреть профиль Найти все сообщения от Gasheck
 
Регистрация: 19.09.2011
Сообщений: 4

this.element.style выдаёт ошибку
this.animation = function () {
	if(this.i==true) {
	this.over=false;
	this.start = new Date().getTime();
	}
	this.i=false;
	var now = (new Date().getTime()) - this.start; // Текущее время
	var progress = now / this.duration; // Прогресс анимации
	var result = (this.to - this.from) * Math.pow(progress,2) + this.from;
	this.element.style.left = result + "px";
	if (progress < 1) // Если анимация не закончилась, продолжаем
    setTimeout(arguments.callee, 1);
	else {
		this.j=true;
		this.globalResult = result;
		this.out = true;
		if(this.outFlag==true)
		VerifyingFlagOut();
		}

в этом методе происходит ошибка при попытке присвоить значение this.element.style.left

переменной element я присваиваю значение путём передачи параметра при создании объекта. В чём может быть причина ошибки? Причём если присвоить какое-то конкретное число, то всё работает, но только в течении одной итерации. И ошибку все равно выдаёт.

Последний раз редактировалось Gasheck, 20.09.2011 в 01:30.
Ответить с цитированием
  #2 (permalink)  
Старый 20.09.2011, 05:54
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Ок. Какая ошибка? Что содержит result на итерации с ошибкой?
Ответить с цитированием
  #3 (permalink)  
Старый 20.09.2011, 13:03
Новичок на форуме
Отправить личное сообщение для Gasheck Посмотреть профиль Найти все сообщения от Gasheck
 
Регистрация: 19.09.2011
Сообщений: 4

на итерации с ошибкой result содержит обыкновенное числовое значение и px, например, 2px. в значениях там порядок, проблема в другом...
window.onload = loadData;
	function loadData(element) {
	this.element=element;
	this.i=true;
	this.start = 0;
	this.from = 0; // Начальная координата X
	this.to = 15; // Конечная координата X
	this.duration = 300; // Длительность
		this.animation = function () {
		if(this.i==true) {
		this.start = new Date().getTime(); //время старта анимации
		}
		this.i=false;
		var now = (new Date().getTime()) - this.start; // Текущее время
		var progress = now / this.duration; // Прогресс анимации
		var result = (this.to - this.from) * Math.pow(progress,2) + this.from;
		this.element.style.left = result + "px";
		if (progress < 1) // Если анимация не закончилась, продолжаем
		setTimeout(this.animation, 1);
		}
	}
	function createFacebookObject() {
		var a = document.getElementById("facebook");
		var facebook = new loadData(a);
		facebook.animation();
}


<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
<script type="text/javascript" src="Untitled-6.js" language="javascript"/> </script>
</head>
<body>
<img id="facebook" onClick="createFacebookObject()" style="position:absolute; left:0px" src="../img/Facebook.png"/>
</body>
</html>

Чтоб легче отслеживать ошибки, лучше закоментировать if (progress < 1).
Я упростил код, чтоб было легче и нагляднее. Этот код по прежнему выдаёт ошибку, что типа невозможно присвоить значение к this.element.style.left . Я пользовался FireBug и заметил такую вещь, что эта ошибка выскакивает на второй итерации... и после прохождения первой итерации, переменная element перестаёт иметь свойство style. Тупо теряется куда-то... Я так понимаю, что проблема в setTimeOut, так как в обычном цикле всё работает как часы и структура переменных не меняется. И еще, вроде, if(this.i==true) тут до лампочки и время старта постоянно берется в каждой итерации новое. Мне надо, чтоб элемент facebook двигался при клике мышки вправо.
Кстати, эта вся красота работает, если не использовать "классы" и объекты. Но мне надо именно так..., чтоб я мог привязать этот код к множеству элементов, путём создания каждому своего объекта.

Последний раз редактировалось Gasheck, 21.09.2011 в 15:41.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IE выдает ошибку при обработке скрипта sailormoon Javascript под браузер 1 10.08.2010 09:20
Выдает ошибку. Что делать? octavian Общие вопросы Javascript 1 20.02.2010 12:13
немогу создать фаил с помощью JavaScrip Greasemonkey в Mozilla firefox выдает ошибку crem Firefox/Mozilla 2 11.08.2009 03:44
ИЕ выдает ошибку в простеньком скрипте. QQQ AJAX и COMET 14 27.03.2009 18:10
insertBefore выдаёт ошибку и не работает на опере и фоксе SunnyDay Общие вопросы Javascript 3 19.09.2008 12:08