本文概述了Javascript在体育运动中的各种问题,供大家参考:

一、JS运动的种种问题

问题1:

错误代码:


功能startmove(){
var定时器= null;
VaR DIV1 = document.getelementbyid(联赛);
如果(DIV1。offsetleft = = 300){
ClearInterval(定时器);
其他{ }
定时器= setInterval(){()函数(
DIV1。风格。左= DIV1。offsetleft + 10 +PX;
},30)
}
}


要实现的功能:

打开定时器,定时器,让联赛转会300px,然后停止DIV1关掉定时器。

错误:

如果语句是错误的,并且代码首先建立一个空的定时器定时,然后如果该DIV1左距离300px,那么定时器定时器关闭。否则,继续前进。但如果不是循环语句、if语句将不再被执行,一旦执行。定时器将不会关闭。

正确的代码:


var定时器= null;
功能startmove(){
VaR DIV1 = document.getelementbyid(联赛);
定时器= setInterval(){()函数(
如果(DIV1。offsetleft = = 300){
ClearInterval(定时器);
}
DIV1。风格。左= DIV1。offsetleft + 10 +PX;
},30)
}


问题二:

错误代码:


Function startMove () {
var速度= 1;
var定时器= null;
无功odiv1 = document.getelementbyid(联赛);
ClearInterval(定时器);
定时器= setInterval(){()函数(
如果(odiv1。offsetleft > = 300){
ClearInterval(定时器);
其他{ }
odiv1。风格。左= odiv1。offsetleft +速度+PX;
}
},30)
}


要实现的功能:

连续单击开始按钮,DIV1会加速。这是因为每次点击按钮打开时,计时器就会启动,它会随着它的积累而加速。所以我们需要打开定时器之前把定时器的第一关。但在加入clearInterval方法关闭定时器,它仍然会加快。

错误:

在startmove方法定时器变量,每点击一个按钮的等价物,它将执行一个startmove方法生成一个闭合,从而创建一个本地定时器,其中每个定时器不共享关闭,定时器或等价闭包产生点击数。

正确的代码:


var定时器= null;
startmove函数(){
var速度= 1;
无功odiv1 = document.getelementbyid(联赛);
ClearInterval(定时器);
定时器= setInterval(){()函数(
如果(odiv1。offsetleft > = 300){
ClearInterval(定时器);
其他{ }
odiv1。风格。左= odiv1。offsetleft +速度+PX;
}
},30)
}


实现共享栏的出入功能:

代码uff1a








# DIV1 {
宽度:150px;
身高:200px;
背景:原木色;
位置:绝对;
左:- 150px;
}
跨{
宽度:20px;
身高:60px;
位置:绝对;
背景:LD;
右:- 20px;
上图:70px;
}


窗口。指针函数(){
无功odiv1 = document.getelementbyid(联赛);
odiv1。onmouseover =函数(){
移动(0);
};
odiv1。onmouseout=函数(){
移动(- 150);
};
};
var定时器= null;
函数移动(目标){
无功odiv1 = document.getelementbyid(联赛);
var速度= 0;
如果(odiv1。offsetleft <目标){
速度= 10;
其他{ }
速度= 10;
}
ClearInterval(定时器);
定时器= setInterval(){()函数(
如果(odiv1。offsetleft = =目标){
ClearInterval(定时器);
其他{ }
odiv1。风格。左= odiv1。offsetleft +速度+PX;
}
},30);
}




分享





实现图像淡入淡出功能:

代码uff1a








# DIV1 {
宽度:200px;
身高:200px;
背景:红色;
位置:绝对;
滤镜:alpha(不透明度:30);
不透明性:0.3;
}


窗口。指针函数(){
无功odiv1 = document.getelementbyid(联赛);
odiv1。onmouseover =函数(){
移动(100);
};
odiv1。onmouseout=函数(){
移动(30);
};
};
var定时器= null;
varα= 30;
函数移动(目标){
无功odiv1 = document.getelementbyid(联赛);
var速度= 0;
ClearInterval(定时器);
如果(alpha =目标){
速度= 10;
其他{ }
速度= 10;
}
定时器= setInterval(){()函数(
如果(alpha =目标){
ClearInterval(定时器);
其他{ }
阿尔法+速度;
odiv1。风格。过滤器=Alpha(透明度:+α+);
odiv1。风格。不透明度=α/ 100;
}
},30);
};









注:

1。因为Javascript没有透明度,这些属性是左边的距离(offsetleft)。所以,用它来代替α变量。

在2.javascript代码,我们需要考虑浏览器的兼容性对线间的透明度设置。IE浏览器的设置方法是odiv1。风格。过滤器=Alpha(透明度:+ Alpha + )。

Chrome和Firefox都odiv1。风格。不透明度=α/ 100。

实现滚动条的事件:

代码uff1a








# DIV1 {
宽度:100px;
身高:100px;
背景:黄绿色;
位置:绝对;
底部:0px;
右:0px;
}


窗口。onscroll =函数(){
无功odiv = document.getelementbyid(联赛);
VaR scrollTop =文档。文档元素}。scrollTop | | document.body.scrolltop;
移动(文档。文档元素}。自己odiv。offsetheight + scrollTop);
};
var定时器= null;
函数移动(目标){
无功odiv = document.getelementbyid(联赛);
ClearInterval(定时器);
定时器= setInterval(){()函数(
速度=(目标odiv。offsettop) / 10;
速度=速度> 0math.ceil(速度):Math.floor(速度);
如果(odiv。offsettop = =目标){
ClearInterval(定时器);
其他{ }
ODiv。风格。最高odiv offsettop +速度+ 'px;
}
},30)
};








二、JS多目标运动的若干问题

问题1:

期望的功能:并行三个div自由度的并行缩放。

代码uff1a








div {
宽度:100px;
身高:50px;
背景:黄色;
保证金:10px;
}


窗口。指针函数(){
无功odiv = document.getelementsbytagname('div);
对于(var i = 0;i < odiv.length;i++){
odiv {我}定时器= null;
我odiv { }。onmouseover =函数(){
移动(300,这个);
};
我odiv { }。onmouseout=函数(){
移动(100,这个);
};
}
};
功能移动(指标,odiv){
ClearInterval(odiv。定时器);
ODiv。定时器= setInterval(){()函数(
速度=(指标odiv。offsetwidth) / 5;
速度=速度> 0math.ceil(速度):Math.floor(速度);
如果(指标= = odiv。offsetwidth){
ClearInterval(odiv。定时器);
其他{ }
ODiv。风格。宽度= odiv。offsetwidth +速度+PX;
}
},30);
}










注意事项:uff1a

多目标的运动如果只设置一个定时器(定时器设置全局)的话,那么三DIV共用一个定时器,然后当一个狭窄的行动时,DIV没有完成另一个DIV打开定时器进行伸展动作,因为计时器是满的,然后一个div的定时器将被取消,所以定时器没有完全还原昨晚的行动,解决的办法是设置一个属性定时器每部

问题二:

希望实现这个功能:许多图片淡入淡出。

代码uff1a








div {
宽度:200px;
身高:200px;
保证金:10px;
背景:黄色;
浮点数:左;
滤镜:alpha(不透明度:30);
不透明性:0.3;
}


窗口。指针函数(){
无功odiv = document.getelementsbytagname('div);
对于(var i = 0;i < odiv.length;i++){
odiv {我}定时器= null;
我odiv { }。α= 30;
我odiv { }。onmouseover =函数(){
移动(100,这个);
};
我odiv { }。onmouseout=函数(){
移动(30,这个);
};
}
};
功能移动(指标,obj){
ClearInterval(obj。定时器);
obj。定时器= setInterval(){()函数(
速度=(指标对象。α) / 30;
速度=速度> 0math.ceil(速度):Math.floor(速度);
如果(obj。α= =指标){
ClearInterval(obj。定时器);
其他{ }
obj。α+ =速度;
obj。风格。过滤器=Alpha(透明度:+ obj。α+);
obj。风格。不透明度= obj。α / 100;
}
},30);
}











我们要实现的功能是不同物体在不同方向上的伸缩功能。

代码uff1a








div {
宽度:100px;
身高:100px;
保证金:10px;
背景:黄色;
浮点数:左;
边境:10px solid黑;
}


窗口。指针函数(){
无功odiv1 = document.getelementbyid('div1);
无功odiv2 = document.getelementbyid('div2);
odiv1定时器= null;
odiv2定时器= null;
odiv1。onmouseover =函数(){
移动(,400,'height);
};
odiv1。onmouseout=函数(){
移动(,100,'height);
};
odiv2。onmouseover =函数(){
移动(,400,'width);
};
odiv2。onmouseout=函数(){
移动(,100,'width);
};
};
功能getstyle(obj,name){
如果(obj。currentstyle){
返回的对象。currentstyle {姓名};
其他{ }
返回getcomputedstyle(obj,false){姓名};
}
};
功能移动(obj,指标,名称){
ClearInterval(obj。定时器);
obj。定时器= setInterval(){()函数(
无功电流= parseInt(getstyle(obj,名称));
速度=(指标CUR) / 30;
速度=速度> 0math.ceil(速度):Math.floor(速度);
如果(我= = ITarget){
ClearInterval(obj。定时器);
其他{ }
{姓名} = obj。风格CUR +速度+PX;
}
},30);
};









注意事项:uff1a

什么1.offsetwidth获得对象不仅是单纯的宽度,但宽度也和物体的外缘。然后OBJ。风格。宽度= obj。offsetwidth-1 +PX;在这句话中,目的是减少1px的速度图像将会减少,但如果边框的宽度设置为1px代替0px,所以offsetwidth价值目标宽度(注:style.width不是线条宽度之间)+ 2,这不仅成为对象的风格。宽度= obj宽度+ 2-1 + PX和增加图像。解决的办法是使用对象的宽度没有offsetwidth。宽度是由getstyle方法得到的。

该方法是2.getstyle字符串。它需要被迫与parseInt数字型。

全运动框架:








# DIV1 {
宽度:200px;
身高:200px;
保证金:20px;
背景:黄色;
边境:5px黑色固体;
滤镜:alpha(不透明度:30);
不透明性:0.3;
}


窗口。指针函数(){
无功odiv1 = document.getelementbyid('div1);
odiv1定时器= null;
odiv1。onmouseover =函数(){
移动(,100,'opacity);
};
odiv1。onmouseout=函数(){
移动(,30,'opacity);
};
};
功能getstyle(obj,name){
如果(obj。currentstyle){
返回的对象。currentstyle {姓名};
其他{ }
返回getcomputedstyle(obj,false){姓名};
}
};
功能移动(obj,指标,名称){
ClearInterval(obj。定时器);
obj。定时器= setInterval(){()函数(
var = 0;
如果(name = = 'opacity){
电流= math.round(parseFloat(getstyle(obj,名称))* 100);
其他{ }
电流= parseInt(getstyle(obj,名称));
}
速度=(指标CUR) / 30;
速度=速度> 0math.ceil(速度):Math.floor(速度);
如果(我= = ITarget){
ClearInterval(obj。定时器);
其他{ }
如果(name = = 'opacity){
obj。风格。不透明度(CUR +速度) / 100;
obj。风格。过滤器= 'alpha(透明度:' +我+速度+ ')';
其他{ }
{姓名} = obj。风格CUR +速度+PX;
}
}
},30);
};








希望本文能对大家的javascript程序设计有所帮助。