网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月13日
漏签
0
天
前端吧
关注:
223,861
贴子:
1,380,962
看贴
图片
吧主推荐
游戏
17
回复贴,共
1
页
<<返回前端吧
>0< 加载中...
大佬,请教一下!
只看楼主
收藏
回复
反叛的大魔王-雅典娜
初涉江湖
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我想问下 ,这个变量写在函数里面和外面有啥区别,按道理,函数里面的可以访问函数外面的,但为啥放在外面会出错,放在里面却没事
我白银,我最猛
人中龙凤
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
报错都不贴出来,鬼知道啊
区块城市(广州)科技发展
web3
前端
务实元宇宙的先行者,去中心化自治组织开放平台,轻松加入或创建你的DAO组织创新采用Web3和区块链思维,web3
前端
真正人人可用,无需下载安装
2025-01-13 14:08
广告
立即查看
善良的尽量
仗剑天涯
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
很明显你这个定时器开着是来记录步数变化的 你放外面那步数不就一直不回边
生活不止眼前
武林盟主
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
你里面重新声明了,引用个毛线,还有不要用var,用let
黎阳渡者
江湖少侠
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
在外面只执行函数调用的次数,在里面执行的是定时器调用的次数
可以不用再战斗了
人海孤鸿
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
你都开定时器了 每次执行的时候都会把定时器里的语句执行一遍
平常的人啊
初涉江湖
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
楼主需要好好学习学习js运行机制了。setinterval callback里的函数,如果使用外部变量,并且变量为primitive type,callback函数会直接替换这个变量为它的值,也就是说,你这个step在外面计算,等到setinterval callback运行的时候,一直是外面计算的值,值不会发生改变,也就跟你的obj和target什么的完全没有关系了
丶影-奈斯
初涉江湖
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title>
<style>
.box {
position: absolute;
/* 注意初始一下 */
left: 0;
width: 100px;
height: 100px; background-color: red;
}
</style>
</head>
<div class="box"></div>
<body>
<script>
function animate(obj, target, callback) {
clearInterval(obj.timer);
var step = (target - obj.offsetLeft) / 10;
step = step < 0 ? Math.ceil(step) : Math.floor(step); // 小于0才向上求整
obj.timer = setInterval(function () {
// == target(需要10的倍数) 要么就用小于等于 target <= obj.offsetLeft
/*
target 201
step 201-0 201/10 20.1
20.1小于0为false 然后向下取整step为20
然后定时器执行累加到obj.offsetLeft获取200
201 == 200 为false
所以target需要10的倍数(要么就<=)
*/
if (target == obj.offsetLeft) {
clearInterval(obj.timer);
if (callback) { callback();
}
return; // 清除定时器 已经到达目标 没必要往下执行(防止多出)
}
obj.style.left = obj.offsetLeft + step + 'px';
}, 15);
}
animate(document.querySelector('.box'), 200, function () { console.log('已到达地点!');
});
</script>
</body>
</html>
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示