【问题标题】:onmouseover stop slideshow helponmouseover 停止幻灯片帮助
【发布时间】:2011-08-14 07:29:14
【问题描述】:

这是一个幻灯片功能,鼠标悬停我希望它停止。它不是在鼠标悬停时停止幻灯片,而是加快了速度?如何纠正此问题以停止鼠标悬停?

<body onload="nextslide();">

function nextslide() {
    // Hide current slide
    var object = document.getElementById('slide' + current); //e.g. slide1
    object.style.display = 'none';

    // Show next slide, if last, loop back to front
    if (current == last) {
        current = 1;
    } else {
        current++;
    }

    object = document.getElementById('slide' + current);
    object.style.display = 'block';
    var timeout = setTimeout(nextslide, 2500);

    object.onmouseover = function(){
        clearTimeout( timeout );
    }
    object.onmouseout = nextslide;
}

【问题讨论】:

  • 你当前的变量在哪里被初始化?

标签: javascript


【解决方案1】:

我尝试了您的代码,我能看到的唯一问题是在“onmouseout”上会立即转换到下一张幻灯片。我会像这样更改该行:

object.onmouseout = function() {
    timeout = setTimeout(nextslide, 2500);
}

我不同意 Jared,在那里定义了“超时”,因为您使用的是嵌套函数,而内部函数可以访问外部函数范围。定义变量时永远不要省略 var。

【讨论】:

  • 关于外部函数范围(我忽略了)确实如此,尽管我没有“从不省略 var”。 (请注意,这确实意味着我提倡污染全局范围。)
  • 另外,如果您尝试了代码,很高兴看到它的实际效果(例如jsfiddle.net)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-28
  • 1970-01-01
  • 2014-05-04
  • 2021-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多