纯javascript中的Fadein不起作用。为什么?

纯javascript中的Fadein不起作用。为什么?,javascript,fadein,fadeout,Javascript,Fadein,Fadeout,我在这里找到了以下代码:。 这是淡出功能。它起作用了 var s = document.getElementById('thing').style; s.opacity = 1; (function fade(){(s.opacity-=.1)<0?s.display="none":setTimeout(fade,100)})(); I will fade…对于您的情况,最好的解决方案是使用更多的CSS而不是JS,您可以将属性transition添加到#thing选择

我在这里找到了以下代码:。 这是淡出功能。它起作用了

var s = document.getElementById('thing').style;
s.opacity = 1;
(function fade(){(s.opacity-=.1)<0?s.display="none":setTimeout(fade,100)})();

I will fade…
对于您的情况,最好的解决方案是使用更多的CSS而不是JS,您可以将属性
transition
添加到
#thing
选择器,然后只需通过JS代码设置不透明度(无需添加超时或任何其他形式的复杂处理)

函数隐藏(){
document.getElementById('thing').style.opacity=0
}
函数show(){
document.getElementById('thing').style.opacity=1
}
#东西{
转换:.4s
}
我来了
隐藏

显示
+=
正在尝试追加,因此请继续使用
-=
,并将.1设置为负值,即
-0.1
,它将正常工作

var s=document.getElementById('thing').style;
s、 不透明度=0;
(函数fade(){
(s.opacity-=-0.1)<1&&setTimeout(淡入度,100);
}
)();
#东西{
背景:红色;
线高:40px;
不透明度:0;
}

我将淡出…
这里有更多关于转换属性的信息:是关于CSS转换的更多信息。请注意,如果使用
转换延迟
转换属性
转换持续时间
转换计时功能
@BrenoPrata,则转换具有相当大的灵活性(此外,虽然这提供了一个有效的替代解决方案,但它并没有真正回答OP的问题。他们专门询问代码失败的原因,而您的答案并没有解决这个问题)很好的解决方案!我会测试它。我的观点是:看你的代码,我不知道它为什么会失败,但从日志记录来看,它似乎是
s.opacity+=.1
没有效果。日志记录
s
前后分别给出0,然后是0.1,然后一直给出0.1。同样,我不知道那里发生了什么。捕捉得好!不透明度是一个字符串,所以附加了0.1W第一次:
“0”+“0.1”
是签出的
“00.1”
。然后是
“0.1”+0.1
,是
“0.10.1”
,并被解析回
“0.1”
,感谢您的解释!致以最良好的祝愿!