Javascript 如何在每次onlick事件后调用不同的函数

Javascript 如何在每次onlick事件后调用不同的函数,javascript,Javascript,我正在寻找一种在每次单击后调用不同函数的方法。在第二次单击后,我想禁用to按钮。我相信我会使用条件,但我不知道如何跟踪特定元素上的点击 谢谢 下面是小提琴的演示: (函数(){ console.log(“功能启动”); var studen1={姓名:“Walker”,地址:{街道:“123南车道”,城市:'Sarasota',州:'FL'},gpa:[“3.0”,“3.4”,“3.8”]}; var studen2={姓名:“Christian”,地址:{街道:“5601卵石滩Ln”,城市:'

我正在寻找一种在每次单击后调用不同函数的方法。在第二次单击后,我想禁用to按钮。我相信我会使用条件,但我不知道如何跟踪特定元素上的点击

谢谢

下面是小提琴的演示:

(函数(){
console.log(“功能启动”);
var studen1={姓名:“Walker”,地址:{街道:“123南车道”,城市:'Sarasota',州:'FL'},gpa:[“3.0”,“3.4”,“3.8”]};
var studen2={姓名:“Christian”,地址:{街道:“5601卵石滩Ln”,城市:'Sacromento',州:'CA'},gpa:[2.5,3.6,3.8]};
var studen3={姓名:“Marisa”,地址:{街道:“833 Golden Pond Ct”,城市:'Osprey',州:'FL'},gpa:[4.0,2.5,3.0]};
var按钮=document.querySelector('a');
函数loadStudent(){
console.log(“加载学生”);
var eleName=document.getElementById('name');
var eleAddress=document.getElementById('address');
var eleGPA=document.getElementById('gpa');
eleName.innerHTML=studen1.name;
eleAddress.innerHTML=studen1.address.street+“
”+studen1.address.city+“
”+studen1.address.state; eleGPA.innerHTML=studen1.gpa; }; button.onclick=函数(e){ var=0; 如果(button.onclick=1){ 控制台日志(“1”); loadStudent(); 点击++; }否则如果(单击>=1){ 控制台日志(“2”); 点击++; }否则{ 控制台日志(“3”); } } })();
移动
var单击
超出功能范围。在您的情况下,每次启动函数时,单击返回零值

(function(){
        console.log("start of function");
        var clicks = 0;
        ...

是的,在if语句中,使用
=
==
而不是
=

当前,每次调用onclick处理程序时,您都将重新定义并重置单击计数器为zewro。尝试将
单击的声明置于事件处理程序之外:

var clicks = 0; 
button.onclick = function(){
   clicks++;
   console.log(clicks);
}

这是一个简单的闭包示例,但我不确定您希望在什么位置跟踪单击,而不是在函数内部,以及希望loadStudent()存在于什么名称空间中

var bar;
(function foo() {
    var b = 0; /* belongs only to foo namespace */
    bar = function () { return b++ }; / bar has a copy of parent(s) function(s) memory space */
})();
window.alert(bar()); /* alerts 0  */
window.alert(bar()); /* alerts 1  */
window.alert(bar()); /* alerts 2  */

请在发布代码之前花点时间清理代码。空白太多了。
button.onclick=1
这是一个赋值,不是比较。我建议您通过jshint传递r代码来捕捉这种错误。您希望单击存储在哪里?里面有一个封闭的按钮吗?你想把学生放在哪里?在botton.onclick函数中也是吗?非常感谢。工作完美您可以单击aswer旁边的复选标记将其标记为已接受。此外,我想指出的是,您需要小心
单击的范围。如果您正在初始化for循环中的许多按钮,那么您可能会让它们共享相同的点击计数器(您可以使用
(tuaction(){}())
技巧来避免这种情况,正如其他一些答案所指出的。
var bar;
(function foo() {
    var b = 0; /* belongs only to foo namespace */
    bar = function () { return b++ }; / bar has a copy of parent(s) function(s) memory space */
})();
window.alert(bar()); /* alerts 0  */
window.alert(bar()); /* alerts 1  */
window.alert(bar()); /* alerts 2  */