2014-11-08 24 views
0

我打電話從按鈕的onclick事件中這樣的功能:我怎樣才能做一個開關按鈕,每次點擊它會做別的事情?

function pauseSlide() { 
       clearInterval(sint); 
       setInterval(slideUpdate, 1000); paused(clearInterval) 
      } 

,我想這對第一次點擊做調用clearInterval(聖馬丁); 如果我再次點擊按鈕,那麼只做setInterval(slideUpdate,1000);

就像一個開關。例如,你可以像這樣做:CelsiusFahrenheit =!CelsiusFarenheit; CelsiusFahrenheit = CelsiusFarenheit; CelsiusFahrenheit =!CelsiusFarenheit; 所以一個點擊布爾CelsiusFahrenheit是真實的,下次點擊它是假的,然後再真正等等....

這是JavaScript按鈕的onclick事件:

var 
        slideShow = d.getElementById('slideShow'), 
        slideCounter = make('div', false, {id: 'slideCounter'}), 
        slideControls = make('div', false, {id: 'slideControls'}), 
        slidePrev = make('a', 'Previous Slide', { 
         onclick: function (e) { 
          controlEvent(e, prevSlide); 
         }, 
         className: 'previous', 
         href: '#' 
        }, slideControls), 
        slideNext = make('a', 'Next Slide', { 
         onclick: function (e) { 
          controlEvent(e, nextSlide); 
         }, 
         className: 'next', 
         href: '#' 
        }, slideControls), 
        slidePause = make('a', 'Pause Slide', { 
         onclick: function (e) { 
          controlEvent(e, pauseSlide); 
         }, 
         className: 'pause', 
         href: '#' 
        }, slideControls) 

我,如果我點擊暫停幻燈片按鈕,它會調用函數pauseSlide 而在pauseSlide裏面,我想讓交換機一次點擊來調用clearInterval,另一次點擊將調用setInterval。

我有這個功能也:

function slideUpdate() { 
       if (swapCounter--) 
        showCounter(); 
       else 
        nextSlide(); 
      } 

如果我按一下按鈕很多,它只是使倒計時每次移動得更快。

如果它會幫助或需要的,這是所有按鈕事件的完整代碼:

JS

+0

第三次點擊或第四次點擊等等是什麼? – 2014-11-08 07:00:13

+0

詹姆斯的確你是對的,這也是一個問題,即使在第5次或第100次點擊之後,如何讓暫停繼續按鈕也能像這樣工作。 – 2014-11-08 07:12:33

回答

0

可能有幾個方法可以做到這一點。最好的做法可能是保留一個布爾變量,如「isPaused」,並根據需要來回翻轉。將您的點擊邏輯封裝在依賴於該變量的條件中。

順便提一下,您無法檢測間隔是否正在運行或已被清除。即使你能做到,閱讀和理解發生的事情也會變得更加困難。我更喜歡如上所述的語義變量。

0

這是在循環中處理多個操作的示例,主要想法是將操作放置在數組中並將它們移動/推動它們循環。

var actions = [ 

function() { 
    console.log(1); 
    $(this).next().fadeOut(100); 
}, 

function() { 
    console.log(2); 
    $(this).next().fadeIn(100); 
}, 

function() { 
    console.log(3); 
    $(this).next().slideUp(); 
}, 

function() { 
    console.log(4); 
    $(this).next().slideDown(); 
}]; 



$('.multiact').each(function (i, e) { 
    $(e).data('actions', actions.concat()); 
}).click(function (e) { 
    var acts = $(this).data('actions'), 
     act = acts.shift(); 
    acts.push(act); 
    act.call(this, e); 
}); 

http://jsfiddle.net/8tgxpedq/2/

0
var prevClicked = false; 
      var my_slide_timer; 
function pauseSlide() { 
      if(!prevClicked){ 
       clearInterval(my_slide_timer); 
       prevClicked = true; 
      }else{ 
        my_slide_timer = setInterval(slideUpdate, period); 
        prevClicked = false; 
      } 
} 

這並獲得成功。

相關問題