//通过对象字面量创建一个对象
var p1 = {
elemen: document.getElementById("div2"),
speed: 1,
delay: 10, //一秒钟动一下
flagX: true,
flagY: true,
startX: 100,
startY: 200,
move: function () {
var width = document.documentElement.clientWidth - this.elemen.offsetLeft;
var height = document.documentElement.clientHeight - this.elemen.offsetTop;
this.elemen.style.left = this.startX + document.documentElement.scrollLeft + 'px';
this.elemen.style.top = this.startY + document.documentElement.scrollTop + 'px';
this.startX = this.startX + this.speed * (this.flagX ? 1 : -1);
if (this.startX <= 0) {
this.flagX = true;
this.startX = 0;
} else if (this.startX >= width) {
this.flagX = false;
this.startX = this.width;
}
this.startY = this.startY + this.speed * (this.flagY ? 1 : -1);
if (this.startY <= 0) {
this.flagY = true;
this.startY = 0;
} else if (this.startY >= height) {
this.flagY = false;
this.startY = this.height;
}
},
run: function () {
var begin = setInterval(this.move, this.delay);
this.elemen.onmouseover = function () {
clearInterval(begin);
};
this.elemen.onmouseout = function () {
begin = setInterval(this.move, this.delay);
};
}
};
p1.run();
1条回答 默认 最新
- Go 旅城通票 2016-09-20 07:58关注
run: function () { // var begin = setInterval(this.move, this.delay); //这样给计时器赋值执行函数句柄,move函数体内this对象为window,不是p1,下面的mouseout同理 var me = this;//// var begin = setInterval(function () { me.move() }, this.delay); this.elemen.onmouseover = function () { clearInterval(begin); }; this.elemen.onmouseout = function () { var begin = setInterval(function () { me.move() }, me.delay);///注意此时this为elemen这个dom对象,不是p1 }; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
- ¥15 C# datagridview 单元格显示进度及值
- ¥15 thinkphp6配合social login单点登录问题
- ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
- ¥15 如何在scanpy上做差异基因和通路富集?
- ¥20 关于#硬件工程#的问题,请各位专家解答!
- ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 虚心请教几个问题,小生先有礼了
- ¥30 截图中的mathematics程序转换成matlab