如何使每个按钮只运行一次该功能?
如果“点击我”中的点击只能使用一次,而其他按钮则相同
为了不放太多代码,我举了一个例子......:
http://jsbin.com/apexod/1/watch
<html>
<head>
<title></title>
</head>
<body>
<input type="button" value="click me" onclick="hello()"><br>
<input type="button" value="click me1" onclick="hello()"><br>
<input type="button" value="click me2" onclick="hello()">
<script>
function hello(){
alert("hello");
}
</script>
</body>
</html>
答案 0 :(得分:4)
更改onclick
处理程序,以便该函数可以引用单击的元素。
<input type="button" value="click me" onclick="hello.call(this)"><br>
<input type="button" value="click me1" onclick="hello.call(this)"><br>
<input type="button" value="click me2" onclick="hello.call(this)">
然后更改函数以删除处理程序。
function hello(){
alert("hello");
this.onclick = null;
}
答案 1 :(得分:2)
您可以删除onclick
<html>
<head>
<title></title>
</head>
<body>
<input type="button" value="click" onclick="hello(this)"><br>
<input type="button" value="click1" onclick="hello(this)"><br>
<input type="button" value="click2" onclick="hello(this)">
<script>
function hello(btn){
alert("hello");
btn.onclick = function(){};
}
</script>
</body>
</html>
答案 2 :(得分:2)
如果在脚本中添加事件侦听器,则更容易管理(还考虑将行为与表示分开的良好做法):
<input type="button" value="click">
<input type="button" value="click1">
<input type="button" value="click2">
<script>
var inputs = document.getElementsByTagName('input');
for(var i=0; i<inputs.length; i++) {
inputs[i].onclick = function() {
hello();
this.onclick = null; // reset the handler
}
}
function hello() {
alert('hello';
}
</script>
答案 3 :(得分:1)
点击按钮调用下面的函数,按钮ID或名称为param
<script>
function hello(caller){
if (caller == 'button1' && $("#button1clicked").val() != '1')
{
// Your code to execute for the function
alert("hello");
// set value for button1clicked
$("#button1clicked").val("1");
}else {
// do nothing
}
}
</script>
为no no按钮添加上述条件
答案 4 :(得分:1)
虽然上述场景和答案都非常特定于点击处理程序,但原始问题how to make a function that only runs once
的答案通常使用包装函数完成,类似于UnderscoreJS .once
方法:
function once(fn) {
var called = false;
return function() {
if (!called) {
called = true;
fn.apply(this, arguments);
}
}
}
上面的实现只允许调用原始函数一次,它将通过后面调用的上下文和参数。然后将其用作:
var oneTimeFn = once(function() {
console.log('I was called.');
});
oneTimeFn();
//-> I was called.
oneTimeFn();
//-> undefined