需要javascript函数只运行一次

时间:2014-03-28 13:08:18

标签: javascript

要返回页面,我们正在使用:

onclick="javascript:history.go(-1)"

我们可以限制连续点击吗?

请建议。

2 个答案:

答案 0 :(得分:1)

单击后可以取消设置onclick属性:

onclick="javascript:history.go(-1); this.onclick=null;"

答案 1 :(得分:1)

您不应该使用内联JavaScript。它不仅使您的代码不易维护,而且使得附加和分离事件变得更加困难。

您应该做的是从DOM中获取目标元素并为其附加一个单击处理程序。为了能够在以后分离它,单击处理程序不能是匿名函数,因此请单独定义它。

稍后,您可以附加在单击元素时将执行的侦听器。如果只想运行一次,则可以使用单击处理程序随后分离处理程序。参见示例(在事件处理程序的上下文中,'this'指的是DOM元素本身)

var button = document.getElementById("clickme");
var clickHandler = function(e) {
    alert("clicked");
    this.removeEventListener("click", clickHandler);
}
button.addEventListener("click", clickHandler);

这是一个有效的例子 http://codepen.io/anon/pen/xAjnG/?editors=101

要进一步扩展,如果您希望按钮不是一次激活而是多次激活,您可以保留一个计数器。请注意,您可以使用此一般情况并设置limit = 1。

var button = document.getElementById("clickme");
var counter = 0;
var limit = 3;
var clickHandler = function(e) {
alert("clicked " + ++counter);

    if(counter >= limit) {
        this.removeEventListener("click", clickHandler);
    }
}

button.addEventListener("click", clickHandler);

这是一个有效的例子 http://codepen.io/anon/pen/mzjcC/?editors=101