为什么JavaScript中的淡出功能会失败?
它不起作用。出了什么问题?我知道这不是您想要的答案,但如果您在项目中实际使用此选项,则需要注意以下几点:为什么JavaScript中的淡出功能会失败?,javascript,Javascript,它不起作用。出了什么问题?我知道这不是您想要的答案,但如果您在项目中实际使用此选项,则需要注意以下几点: 您仅设置不透明度动画–请记住,当您到达这一行时,IE: this.style.opacity = ".90"; opacity是字符串“.90”不是对元素的style属性的opacity属性的引用 从函数返回并不会取消间隔,为此需要clearInterval var opacity = this.style.opacity; 此外,“完全不透明度”为1,“无”为0。您每次都将其减少s,
- 您仅设置不透明度动画–请记住,当您到达这一行时,IE:
this.style.opacity = ".90";
是字符串opacity
不是对元素的“.90”
属性的style
属性的引用 从函数返回并不会取消间隔,为此需要opacity
clearInterval
此外,“完全不透明度”为1,“无”为0。您每次都将其减少var opacity = this.style.opacity;
,并且s
被定义为s
。由于您从下降到5
开始,您的意思可能是:.9
function fadeOut(r, s) { var self = this; if (!self instanceof Element) return false; self.style.opacity = ".90"; var t = setInterval(function() { if (!r) r = 500; self.style.opacity = self.style.opacity - s; if (self.style.opacity == ".0") { clearInterval(t); } }, r); };
不透明度从0.9开始。然后在每个间隔上减去5。这意味着,第一次运行间隔时,您将尝试将不透明度设置为字符串“-4.1”,该字符串将无法解析为有效的不透明度值,因此该设置将被忽略。然后你绕圈子。你是说0.05而不是5?还是回调函数中的s/100 这段代码有很多错误 首先,CSS属性是字符串,因此不透明度添加行应该是:
不透明度转换为整数,然后加负0.05,然后使用var d = document.getElementById("box"); function fadeOut(r, s) { if (!this instanceof Element) return false; this.style.opacity = ".90"; var opacity = this.style.opacity; var t = setInterval(function() { if (!r) r = 500; opacity = (opacity) - s; if (opacity == ".0") return; }, r); }; fadeOut.apply(d, [100, 5]);
其次,如果(!r)r=500,+''
代码>应在匿名函数外部定义 你应该:
opacity = parseInt(opacity) - 0.05 + '';
它从0到100。我想说,使用jQuery。生命对于重新发明轮子来说太短了。想想跨浏览器的可移植性……我真的很想知道如何在不使用框架的情况下自己做到这一点。如果你知道答案,那会有帮助的。fadeOut.apply(d, [100, .1]);
var d = document.getElementById("box"); function fadeOut(r, s) { if (!this instanceof Element) return false; this.style.opacity = ".90"; var opacity = this.style.opacity; var t = setInterval(function() { if (!r) r = 500; opacity = (opacity) - s; if (opacity == ".0") return; }, r); }; fadeOut.apply(d, [100, 5]);
opacity = parseInt(opacity) - 0.05 + '';
var d = document.getElementById("box"); function fadeOut(fadeScaler, hertz) { if (!this instanceof Element) return false; hertz = (!hertz) ? 60 : hertz; // Approx 60 hertz refresh rate var opacity = this.style.opacity opacity = ".9"; var t = setInterval( function() { opacity = parseInt(opacity) - fadeScaler + ''; if (parseInt(opacity) <= 0) clearInterval(t); }, Math.floor(1000 / hertz)); // 1000 miliseconds / hertz = refresh rate }; fadeOut.apply(d, [.05]);
this.filters.alpha.opacity=100