Javascript setTimeout 不会触发延迟
Javascript setTimeout doesn't trigger a delay
我对javascript很陌生,我遇到了一些奇怪的问题。我试图淡出图像,请注意,此代码尚未完成。据我所知,这应该有效。但没有。这是代码。
function changeimg() {
var allElements = document.getElementsByClassName('picture');
console.log(allElements.length);
for (var i = 0; i<allElements.length;i++) {
var opac = window.getComputedStyle(allElements[i]).opacity;
if (opac > 0.2) {
fadeout(allElements[i]);
break;
}
}
}
function fadeout(element) {
console.log("reduce opacity");
var opac2 = window.getComputedStyle(element).opacity;
element.style.opacity = opac2 - 0.05;
if(opac2 > 0.2) {
setTimeout(fadeout(element), 100);
}
}
这是为了找到现在可见的图像,并将其淡出。 这有效,但它会立即发生。无论我给 setTimout(( 方法什么值,它都不会使用它,并且几乎不间断地完成它。
我在互联网上环顾四周,似乎我需要在我的 fadeout(( 方法上丢失 ((。但是,我怎样才能为淡出方法提供要淡出的元素呢?
提前致谢
你正在将 undefined 传递给 setTimeout
,它需要一个函数。这就是您体验这种行为的原因。您需要传递一个函数,请在此处阅读更多内容。下面的固定代码应该会有所帮助。
function changeimg() {
var allElements = document.getElementsByClassName('picture');
console.log(allElements.length);
for (var i = 0; i<allElements.length;i++) {
var opac = window.getComputedStyle(allElements[i]).opacity;
if (opac > 0.2) {
fadeout(allElements[i]);
break;
}
}
}
function fadeout(element) {
console.log("reduce opacity");
var opac2 = window.getComputedStyle(element).opacity;
element.style.opacity = opac2 - 0.05;
if(opac2 > 0.2) {
setTimeout(function() {fadeout(element);), 100);
}
}
相关文章:
- SetTimeout延迟未按jquery幻灯片中的预期工作
- 使用promise或setTimeout确定延迟函数的调用顺序
- 为什么即使 setTimeout 设置为 0 延迟也会有延迟
- 当超出范围时,延迟执行脚本Jquery(或SetTimeOut)BUT
- 使用setTimeout延迟d3转换
- setTimeOut没有等待适当的延迟时间
- firefox中的setTimeout延迟
- 使用setTimeout的延迟居中弹出式Javascript
- 延迟后JS setTimeout获取事件
- 使用setTimeout在创建新元素之间强制延迟
- 如何使用js-setTimeout延迟此文本的淡入
- 延迟 href 单击,但不使用 SetTimeout
- setTimeout() 无延迟触发
- Javascript 使用 setTimeout() 时延迟长度的经验法则允许出现“加载”弹出窗口
- 使用 setTimeout 延迟所有繁重的计算
- setTimeout() - 在具有随机延迟的 for 循环中
- 使用 settimeout 以延迟方式对函数进行排队
- 具有不同延迟的setTimeout()回调的JavaScript执行顺序
- 如何在下面的代码中添加setTimeout来延迟渐变动画
- 变量值更改不会延迟setTimeout