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