Порядок получения елемента по 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> сталкнулся с тем что она у меня не работала :cray: , а неработала потому что скрипт не мог получить div из документа. Я долго думал почему так , позже вспомнилось, что у меня такое уже было, дело в том что если теги <script> c функцией располагаются в документе до элемента(как в моем примере) , то его не получить =(, a если позже то все работает. Вопрос вот в чем, как строится DOM документа, судя по примеру что явно не сразу? P.S Извените за сумбурность. |
Когда браузер видит ЖС он останавливает загрузку всего (некоторые браузеры асинхронно могут грузить ЖС/КСС), а после загрузки сразу выполняет. Конечно есть способы, чтобы заставить их выполнятся последовательно (атрибут defer/вставка через document.write и т.д.) и после загрузки. В твоём случае просто оберни ЖС событие, например window.onload и всё будет ок или вставь свой ЖС перед </body> (но могут возникнуть косяки).
|
Часовой пояс GMT +3, время: 02:01. |