Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.07.2011, 22:02
Аспирант
Отправить личное сообщение для Sundro Посмотреть профиль Найти все сообщения от Sundro
 
Регистрация: 25.05.2011
Сообщений: 46

Порядок получения елемента по Id или ТаgName
Разбирал функцию-пример,animateCSS, из книжки
<html>
<head>
<title>Заголовок</title>
</head>
<body>
<script>
function animateCSS(element, numFrames, timePerFrame, animation, whendone) {
var frame = 0;
var time = 0; 
var intervalId = setInterval(displayNextFrame, timePerFrame);
	function displayNextFrame() {
		if (frame >= numFrames) {
			clearInterval(intervalId);
			if (whendone) whendone(element);
			return;
		};
	for(var cssprop in animation) {
		try {
			var a = animation[cssprop](frame, time);
			//alert(a);
			element.style[cssprop] = a;
		} catch(e) {};
	};
frame++;
time += timePerFrame;
	};
};

 var b = document.getElementById("NiceGot");
 //alert("b = " + b);
 animateCSS( b,30 , 50,	{
						top:  function(f,t)  {return 3*f*5 + "px";},
						clip : function(f,t) {return "rect(auto "+f*10+"px auto auto)";},
							});
</script>
<div style="position:absolute;" id = "NiceGot" >Здесь был Вася</div>
</body>
</html>

сталкнулся с тем что она у меня не работала , а неработала потому что скрипт не мог получить div из документа. Я долго думал почему так , позже вспомнилось, что у меня такое уже было, дело в том что если теги <script> c функцией располагаются в документе до элемента(как в моем примере) , то его не получить =(, a если позже то все работает. Вопрос вот в чем, как строится DOM
документа, судя по примеру что явно не сразу? P.S Извените за сумбурность.
Ответить с цитированием
  #2 (permalink)  
Старый 21.07.2011, 22:06
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Когда браузер видит ЖС он останавливает загрузку всего (некоторые браузеры асинхронно могут грузить ЖС/КСС), а после загрузки сразу выполняет. Конечно есть способы, чтобы заставить их выполнятся последовательно (атрибут defer/вставка через document.write и т.д.) и после загрузки. В твоём случае просто оберни ЖС событие, например window.onload и всё будет ок или вставь свой ЖС перед </body> (но могут возникнуть косяки).
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 21.07.2011 в 22:38.
Ответить с цитированием
Ответ



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

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