2011-08-13 58 views
1

這是一個幻燈片的功能,onmouseover我希望它停止。而不是停止幻燈片onmouseover,它加快?我怎樣才能糾正這個停止onmouseover?onmouseover停止幻燈片的幫助

<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; 
} 
+0

你當前的var被初始化了嗎? – Awea

回答

3

我試過你的代碼,我可以看到的唯一問題是「onmouseout」,有一個直接轉換到下一張幻燈片。因爲你使用嵌套函數和內部函數可以訪問外部功能範圍

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

我不同意賈裏德,「超時」的定義有:我會改變該行這樣的。定義變量時不應該忽略var。

+0

這是關於外部函數範圍(我忽略),雖然'從不省略var'我沒有。 (注意,這意味着我主張污染全球範圍。) –

+0

另外,如果您嘗試了代碼,則很高興看到它在行動中(例如http://jsfiddle.net)。 –

+0

這裏是一個例子:http://jsfiddle.net/8ndGr/3/ – strada