Javascript 衰减功能故障

Javascript 衰减功能故障,javascript,events,dom,Javascript,Events,Dom,我制作了一个脚本,当鼠标移到按钮上时,按钮会淡出,然后在鼠标退出时淡入淡出。它在“mouseover”事件中运行良好,但在“mouseout”事件中失败。有什么想法吗 另外,我没有使用jquery,因为我试图学习jquery是为了教育目的 请转到此处查看代码: 请随意编辑它 您有两个问题: 间隔被创建了多次,但没有被清除 您正在使用-.1)document.getElementById(elem.style.opacity=fade; },速度) }否则{ 计数=0; 间隔=设置间隔(函数()

我制作了一个脚本,当鼠标移到按钮上时,按钮会淡出,然后在鼠标退出时淡入淡出。它在“mouseover”事件中运行良好,但在“mouseout”事件中失败。有什么想法吗

另外,我没有使用jquery,因为我试图学习jquery是为了教育目的

请转到此处查看代码: 请随意编辑它

您有两个问题:

  • 间隔被创建了多次,但没有被清除
  • 您正在使用
    <1.1
    确定元素是否应可见,而
    淡入淡出
    计数从1.1开始。显然,1.1永远不会低于1.1
,如果在实施过程中遇到困难,请随时寻求帮助:

var interval; // Declare a variable to hold the timer OUTSIDE the function, 
              //  so that all event listeners can work with ONE interval
function fade(elem, speed, mode) {
    var count = 0;
    var fade = 1.0;
    clearInterval(interval); // Clear interval, to prevent having multiple
                             //  running intervals
    if (mode === true && count == 0) {
        count = 1;
        interval = setInterval(function() {
            fade = fade - .1;
            if(fade > -.1) document.getElementById(elem).style.opacity = fade;
        }, speed)
    } else {
        count = 0;
        interval = setInterval(function() {
            fade = fade + .1;
            // Updated code below: Replaced < with <=
            if(fade <= 1.1) document.getElementById(elem).style.opacity = fade;
        }, speed)
    }
}
var间隔;//声明一个变量以将计时器保持在函数外部,
//这样所有事件侦听器都可以在一个时间间隔内工作
功能衰减(要素、速度、模式){
var计数=0;
var-fade=1.0;
clearInterval(interval);//清除interval,以防止出现多个
//运行间隔
if(mode==true&&count==0){
计数=1;
间隔=设置间隔(函数(){
褪色=褪色-.1;
if(fade>-.1)document.getElementById(elem.style.opacity=fade;
},速度)
}否则{
计数=0;
间隔=设置间隔(函数(){
淡入淡出=淡入淡出+0.1;

//下面更新的代码:替换为首先,你永远不会停止你的间隔计时器。一旦它开始,它将永远运行。你需要保存设置间隔的返回值,并在淡入淡出后用clearInterval停止计时器。

嗯。我的编辑消失了。无论如何,你也应该在
如果(褪色…)
block,以防止音量控制器在不必要时继续。您是否有skype或电子邮件Stack Exchange还提供了一个聊天频道。如果您想进行更广泛的讨论,请开始聊天,然后邀请我。我将为您预留最多10分钟的时间。@JamesFair在聊天页面底部。我刚刚创建了一个聊天室,joi让我看看:让我们