Interval 为什么只执行了一次啊?

夜丿Night 2017-02-06 03:47:11
<script>
var list = document.getElementById('list');
var first = document.getElementById('first');
var opacity1 = first.style.opacity;
var newOpacity;
function touMingDu1(x){
newOpacity = opacity1 + x;
if(newOpacity > 1){
clearInterval(timer);
}else{
first.style.opacity = newOpacity;
}
}
function play1(){
var timer = setInterval(function(){
touMingDu1(0.1)
},500);
}
play1();
function fun(x){
list.style.top = x*(-600) + 'px';
}
</script>
我想让id为first的div元素透明度从完全透明慢慢渐变成不透明,但是interval却只执行了一次,透明度就变成01就完事了。怎么回事啊?我小白
...全文
337 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_26964525 2017-02-27
  • 打赏
  • 举报
回复
timer 放在了方法内部~~为局部变量
木头海上漂 2017-02-07
  • 打赏
  • 举报
回复
在变量前加个“+”可以把符合数字的字符串转成number类型
天际的海浪 2017-02-06
  • 打赏
  • 举报
回复
引用 3 楼 qq_37462440 的回复:
var opacity1 = parseFloat(first.style.opacity); 我试了试 ,我把这句话parseFloat删掉 透明度从0变到0.1就停止了,执行了一次, 不删就一直保持完全透明,不知道怎么回事。
因为first.style.opacity取的值是字符串, 字符串在用+号时是拼接字符串的作用。 如, "0.1"+0.1 = "0.10.1"
天际的海浪 2017-02-06
  • 打赏
  • 举报
回复
var opacity1 = parseFloat(first.style.opacity) || 0;
夜丿Night 2017-02-06
  • 打赏
  • 举报
回复
我用console.debug 给setInterval 计数,发现后台他一直在跑,但是透明度就是加不上,疯了……哪里出毛病了呢,弄一天了。
夜丿Night 2017-02-06
  • 打赏
  • 举报
回复
var opacity1 = parseFloat(first.style.opacity); 我试了试 ,我把这句话parseFloat删掉 透明度从0变到0.1就停止了,执行了一次, 不删就一直保持完全透明,不知道怎么回事。
夜丿Night 2017-02-06
  • 打赏
  • 举报
回复
换成这样元素一直保持完全透明了。。怎么回事
天际的海浪 2017-02-06
  • 打赏
  • 举报
回复

var list = document.getElementById('list');
var first = document.getElementById('first');
var timer;

function touMingDu1(x) {
	var opacity1 = parseFloat(first.style.opacity);
	var newOpacity = opacity1 + x;
	if (newOpacity > 1) {
		clearInterval(timer);
	} else {
		first.style.opacity = newOpacity;
	}
}

function play1() {
	timer = setInterval(function() {
		touMingDu1(0.1)
	}, 500);
}
play1();

function fun(x) {
	list.style.top = x * (-600) + 'px';
}

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧