一个按钮在不同的点击上调用两个不同的功能

时间:2015-05-29 02:49:50

标签: javascript html

<script>
function one() {
   blah blah blah
}

function two() {
   blah blah blah
}
</script>

<button onclick="one(); two()">Click Me</button>

这将同时调用这两个函数。我想要的是在第一次单击时调用函数one()然后在第二次单击时调用函数two()。第三次点击时调用函数three(),依此类推,直到第7次点击

如果可能,我宁愿不使用jQuery

5 个答案:

答案 0 :(得分:4)

您可以使用IIFE来完成此操作:

var fn3 = (function() {
  var first = true;
  return function() {
    first ? fn1() : fn2();
    first = !first;
  }
})();

function fn1() {
  console.log(1);
};
function fn2() {
  console.log(2);
};
<button onClick="fn3()">click</button>

答案 1 :(得分:3)

解决方案不是太复杂,你只能从另一个函数中得到一个()和两个()。

&#13;
&#13;
var callOne = true;

function one() {
   alert('Call one');
}

function two() {
   alert('Call two');
}

function call(){
   if(callOne) one();
  else two();
  callOne = !callOne;
}
&#13;
<button onclick="call();">Click Me</button>
&#13;
&#13;
&#13;

答案 2 :(得分:2)

这样做的一个简单方法是重新分配onclick值:

<button id="clickme">Click Me</button>
<script>
  function one() {
     alert('one clicked');
     document.getElementById('clickme').onclick = two;
  }

  function two() {
   alert('two clicked');
  }

  document.getElementById('clickme').onclick = one;
</script>

使用此技巧,您可以选择在调用two()后禁用该按钮:

document.getElementById('clickme').onclick = null;

将点击处理程序切换回one()

document.getElementById('clickme').onclick = one;

或者做你想做的任何其他事情。

答案 3 :(得分:0)

我会像贝娄那样做。

  

单击该按钮有一个功能,可根据次数决定调用哪个功能。

<button onclick="decideFunction()">Click Me</button>

var times = 0;

var one = function(){
    alert('first time');
}

var two = function(){
    alert('After first');
}

var decideFunction = function(){
    if(times == 0){
        one();
        times++;
    }
     else{
         two();
    }
} 

因此,它首次执行函数one,第二次执行函数two

答案 4 :(得分:0)

最简单的方法是将额外变量定义为false(当然还是true)。虽然我们的变量是false,但点击按钮会调用第一个函数并将变量更改为true。在第二次单击时,我们的onclick函数检查变量值并调用我们为true值定义的函数。

var button = document.getElementById('button');
var x = false; 
button.addEventListener('click', function(){
if(!x){
    alert('function 1');
    x = true;
    }else{
    alert('function 2');
    x = false;
    }  
})