2014-11-08 46 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; 
      } 
} 

这并获得成功。

相关问题