Javascript 单击计数器,每次单击不同的事件

Javascript 单击计数器,每次单击不同的事件,javascript,jquery,Javascript,Jquery,我试图创建一个数组,对页面某个区域的点击进行计数和跟踪;然后我希望每次点击都能做点什么。第五次通过mp3触发器点击声音。第六次单击页面时会抖动 我如何编写一个数组来为每次单击添加不同的事件,并为特定的单击次数分配一些内容 var clicks = 0; $('a').click(function() { switch(++clicks) { case X: /* do something */ break; /

我试图创建一个数组,对页面某个区域的点击进行计数和跟踪;然后我希望每次点击都能做点什么。第五次通过mp3触发器点击声音。第六次单击页面时会抖动

我如何编写一个数组来为每次单击添加不同的事件,并为特定的单击次数分配一些内容

var clicks = 0;
$('a').click(function() {
    switch(++clicks) {
        case X:
            /* do something */
            break;
       /* ... */
    }
});
也可以将函数存储在数组中

var myEvents = [function1, function2, function3];
var clicks = -1;
$('a').click(function() {
    clicks++;
    if(myEvents[clicks] != undefined) myEvents[clicks]();
});
也可以将函数存储在数组中

var myEvents = [function1, function2, function3];
var clicks = -1;
$('a').click(function() {
    clicks++;
    if(myEvents[clicks] != undefined) myEvents[clicks]();
});
像这样的东西

var actions = {
  5: 'playMusic',
  6: 'shakeDiv'     
}, 
actors = {
 doNothing: function() {/*default action; do nothing;*/},
 playMusic: function() {
     alert('Your are about to here a music now');
     /*place code for playing music here*/
   },
 shakeDiv: function() {
    alert('page is about to shake');
    /* place shake animation code here*/
  }
},
defaultActionName = 'doNothing';//default action name


var clickCount = 0;

$('yourSelectorForThepart').click(function(e) {
  clickCount++;
  doAction();
});

function doAction() {
  var actionName = actions[clickCount] || defaultActionName;
  actors[actionName]();
}
是的,您可以合并
操作
&
参与者
。但是我更喜欢这种维护和可读性的方法。

类似的东西

var actions = {
  5: 'playMusic',
  6: 'shakeDiv'     
}, 
actors = {
 doNothing: function() {/*default action; do nothing;*/},
 playMusic: function() {
     alert('Your are about to here a music now');
     /*place code for playing music here*/
   },
 shakeDiv: function() {
    alert('page is about to shake');
    /* place shake animation code here*/
  }
},
defaultActionName = 'doNothing';//default action name


var clickCount = 0;

$('yourSelectorForThepart').click(function(e) {
  clickCount++;
  doAction();
});

function doAction() {
  var actionName = actions[clickCount] || defaultActionName;
  actors[actionName]();
}

是的,您可以合并
操作
&
参与者
。但我更喜欢这种维护和可读性方法。

您可以这样做:

// put your click actions as functions here
var clickEvents = [function1, function2, function3, function4, playMP3, shakePage];
var clicks = 0;
// put your clickable object here
clickableObject.onclick = function(){
    clickEvents[clicks]();
    clicks++;
}

你可以这样做:

// put your click actions as functions here
var clickEvents = [function1, function2, function3, function4, playMP3, shakePage];
var clicks = 0;
// put your clickable object here
clickableObject.onclick = function(){
    clickEvents[clicks]();
    clicks++;
}

只需创建事件函数数组:

var a1_Events = [shake, noise, something],
    a1_c = 0;


function shake(){
  alert('SHAKING!');
}

function noise(){
  alert('BZZZZZZZZZZZ!');
}

function something(){
  alert('SOMETHING ELSE!');
}


$('#area1').click(function(){
   a1_Events[a1_c++ % a1_Events.length]();
});
如果您不想循环您的事件,那么只需使用:
a1_事件[a1_c++]()

只需创建事件函数数组:

var a1_Events = [shake, noise, something],
    a1_c = 0;


function shake(){
  alert('SHAKING!');
}

function noise(){
  alert('BZZZZZZZZZZZ!');
}

function something(){
  alert('SOMETHING ELSE!');
}


$('#area1').click(function(){
   a1_Events[a1_c++ % a1_Events.length]();
});

如果您不想循环您的事件,那么只需使用:
a1_事件[a1_c++]()

提问者希望在第6次点击时摇动页面,而不仅仅是播放不同的声音。非常感谢;这看起来太棒了。我想知道我如何才能实现它;到了触发的程度,比如说,在一个定义的变量上触发一个MP3文件。@1977:我已经更新了答案。如果对您没有帮助,请告诉我。询问者希望在第6次单击时摇动页面,而不仅仅是播放不同的声音。非常感谢;这看起来太棒了。我想知道我如何才能实现它;到了触发的程度,比如说,在一个定义的变量上触发一个MP3文件。@1977:我已经更新了答案。让我知道,如果它对你没有用处。第一个解决方案真的很优雅+1我也对“休息”感到困惑我以前从未见过这种情况。因此,我可以添加一个新函数;就在那条线上面,对吗?下一组代码只是存储和调用这些函数;正当非常感谢你的帮助@1977-
断路器
开关/外壳
的一部分。。。它的javascript basicsFirst解决方案非常优雅+1我也对“休息”感到困惑我以前从未见过这种情况。因此,我可以添加一个新函数;就在那条线上面,对吗?下一组代码只是存储和调用这些函数;正当非常感谢你的帮助@1977-
断路器
开关/外壳
的一部分。。。它的javascript基础