【问题标题】:How can i give a limit to an append function with javascript?如何使用 javascript 限制附加函数?
【发布时间】:2011-05-21 19:02:04
【问题描述】:

我有一个附加按钮,如果你无休止地点击它,它就会无休止地附加。 假设我希望这个按钮执行 10 次。

让我用幻想代码告诉你:p 我在想什么,以便我可以从错误中吸取教训; (我知道它错了,但我正在学习)

thismany = 1;

appendbutton.onClick = "thismany = +1";
if{ thismany = <9}

appendbutton.onClick = disabled

提前致谢

【问题讨论】:

  • 标签在引起其他 SO 回答者的注意方面起着非常重要的作用。如果您在询问有关 Javascript 的问题,请包括在内。 onclick、append、limit 等标签也适用于其他语言。
  • @pyfunc:对不起,我以为我确实将 Javascript 作为标签!怪我

标签: javascript onclick append limit


【解决方案1】:

使用你的变量名:

var thismany = 0;

appendbutton.onclick = function() {
  if (thismany++ < 10) {
    // append things
  }
};

变量封装:

appendbutton.onclick = function() {
  if (this.count == undefined) {
    this.count = 0;
  }

  if (this.count++ < 10) {
    // append things
  }
};

【讨论】:

  • 谢谢!请问封装变量有什么好处? :)
  • 嗯,第一种方法使用函数外部范围内的变量,第二种方法使用 Javascript 中的所有函数也是对象,因此能够具有属性的事实。该变量仅在代码中相关,因此在这种情况下不希望使用外部变量。在某些情况下,如果您想要重置,最好使用外部变量。
【解决方案2】:
(function(){
    var count = 1;
    document.getElementById("the_node_id").onclick = function(){
        if(count > 10){
            return;
        }
        do_stuff();
        count ++;
    };
})()

更新

var count = 1;
addEvent(append, "click", function(/* someargument */){ 
    if(count > 10){
        return;
    }
    // if you need arguments that are passed to the function,
    // you can add them to the anonymous one and pass them 
    // to appendFunction
    appendFunction(/* someargument */);
    count++; 
});

【讨论】:

  • 谢谢,我有这个代码,但按钮 addEvent(append, "click", appendFunction);我也可以添加这个功能吗?
  • @Opoe count 需要在相同的范围内递增。我会更新代码来举个例子。
  • 哇,非常感谢!我的代码中有更多的“var count =”,这可能是它还没有工作的原因吗?
  • @Opoe 也许,更改变量的名称。如果它们在同一范围内,则应始终使用不同的名称。另外,我建议您阅读更多关于范围和闭包的内容,它们很棒,但您需要先掌握它们:robertnyman.com/2008/10/09/…
  • 哇,非常感谢!真的在这里帮助了我,我会读到有趣的文章!谢谢!!
【解决方案3】:

这是直接的 javascript。您也可以考虑使用 jQuery 等框架来简化操作。

这假定您的按钮 HTML 具有 id="appendButton" 作为属性。

var count = 0;
document.getElementById("appendButton").onClick = function(e) {
     if( count >= 10 ) {
          return false;
     }
     else {
          count ++;
          document.getElementById("id_of_thing_you_append_to").innerHTML += "Whatever you're appending";
     }
}

【讨论】:

  • 不是onclick 而不是onClick
猜你喜欢
  • 1970-01-01
  • 2016-12-02
  • 2020-07-28
  • 1970-01-01
  • 2019-03-22
  • 1970-01-01
  • 2014-12-30
  • 2013-09-21
  • 1970-01-01
相关资源
最近更新 更多