Javascript中的ProcessMessages()
我想把一个div放到某个高度来显示一些额外的内容。为此,我编写了以下dropbox()函数:Javascript中的ProcessMessages(),javascript,html,css,drop-down-menu,Javascript,Html,Css,Drop Down Menu,我想把一个div放到某个高度来显示一些额外的内容。为此,我编写了以下dropbox()函数: <script type="text/javascript"> function sleep(milliseconds) { var start = new Date().getTime(); for (var i = 0; i < 1e7; i++) { if ((new Date().getTime() - start)
<script type="text/javascript">
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
function dropbox(element){
var obj = document.getElementById(element);
if(obj) {
var element = document.getElementById(element),
style = window.getComputedStyle(element),
height = style.getPropertyValue('height');
height = height.substring(0,2);
var i = 0;
for (i = height; i<200; i++)
{
sleep(100);
var tst = i+"px";
//alert(tst);
obj.style.height = tst;
}
//alert(i);
} else {
}
}
</script>
函数睡眠(毫秒){
var start=new Date().getTime();
对于(变量i=0;i<1e7;i++){
如果((新日期().getTime()-start)>毫秒){
打破
}
}
}
功能下拉框(元素){
var obj=document.getElementById(元素);
如果(obj){
var element=document.getElementById(元素),
style=window.getComputedStyle(元素),
高度=style.getPropertyValue('height');
高度=高度。子字符串(0,2);
var i=0;
对于(i=height;i您不能在浏览器javascript中使用循环延迟,因为它会使浏览器对输入和屏幕更新都不响应,并浪费移动设备上的电池
相反,您应该使用setTimeout()
它允许您为将来的一段时间安排活动。好的动画使用tweening算法来安排动画的下一个滴答声,然后比较经过的时间并计算下一个动画步骤应该绘制的位置,并以这种方式不断进行自校正
此外,如果你在谷歌上搜索javascript动画
,你会发现许多有用的预写代码,用于使用纯javascript制作动画。此外,所有主要的javascript库(如jQuery或YUI)都内置并已经为你编写了重要的动画功能
下面是一个简单的例子:
function dropbox(elem, finalHt, duration) {
var start = new Date().getTime();
var tick = 20;
var startHt = parseInt(elem.style.height, 10);
var growHt = finalHt - startHt;
function next() {
var now = new Date().getTime();
var percent = (now - start) / duration;
var target = Math.round(startHt + (growHt * percent));
elem.style.height = Math.min(target, finalHt) + "px";
if (target < finalHt) {
setTimeout(next, tick);
}
}
setTimeout(next, tick);
}
function run() {
var item = document.getElementById("box");
item.style.height = "10px";
dropbox(item, 300, 2000);
}
函数下拉框(元素、最终、持续时间){
var start=new Date().getTime();
var-tick=20;
var startHt=parseInt(elem.style.height,10);
var Growt=最终-开始;
函数next(){
var now=new Date().getTime();
变量百分比=(现在-开始)/持续时间;
var目标=数学整数(起始值+(增长*百分比));
elem.style.height=Math.min(目标,最终)+“px”;
如果(目标<最终目标){
设置超时(下一步,勾选);
}
}
设置超时(下一步,勾选);
}
函数运行(){
var item=document.getElementById(“框”);
item.style.height=“10px”;
dropbox(第300项,2000年);
}
工作示例和更通用的代码:这是一个示例代码。它可能会帮助您
<div class="right_content">
We deliver quick and easy registration.
Mysites.com is our hosting server and we've buit our website under observation of Mysite.com
</div>
<p class="flip">Know About us</p>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function(){
$(".flip").mouseover(function(){
$(".right_content").slideToggle("slow");
});
});
</script>
我们提供快速方便的注册服务。
Mysite.com是我们的托管服务器,我们在Mysite.com的监督下建立了我们的网站
了解我们
$(文档).ready(函数(){
$(“.flip”).mouseover(函数(){
$(“.right_content”)。滑动切换(“slow”);
});
});
你能将示例代码转储到jsfiddle.net和/或提供你的HTML吗?很难帮助你调试丢失了这么多信息的任何东西。另外,你考虑过jQuery吗?当然没有必要做这种事情,但确实会让它更容易。Brad,当然可以,实现已经开始(按“立即预订”按钮)这是jQuery。OP在哪里要求jQuery,或者说明他们想使用jQuery?