Javascript 设置注释创建次数的限制

Javascript 设置注释创建次数的限制,javascript,html,css,dom,Javascript,Html,Css,Dom,我目前正在为我的网站制作一个帖子,按下加号按钮将创建一个可编辑的帖子/便笺。我现在已经完成了这一部分,但我正在努力完成下一部分,即将便笺数量限制在4张。我尝试使用一个全局变量作为计数器,因此当计数器为3时,它应该停止创建更多的便笺,但不幸的是,它不起作用 以下是指向我的可行代码的链接: 这是我将便笺数量限制在4张的徒劳尝试 $("#create").click(function(){ var count = 0; if( count < 4){ $("#create").clic

我目前正在为我的网站制作一个帖子,按下加号按钮将创建一个可编辑的帖子/便笺。我现在已经完成了这一部分,但我正在努力完成下一部分,即将便笺数量限制在4张。我尝试使用一个全局变量作为计数器,因此当计数器为3时,它应该停止创建更多的便笺,但不幸的是,它不起作用

以下是指向我的可行代码的链接:

这是我将便笺数量限制在4张的徒劳尝试

$("#create").click(function(){
var count = 0;
if( count < 4){
    $("#create").click(function() {
    $(this).before("<textarea></textarea>");
    }); 
    count++;
          }
}
$(“#创建”)。单击(函数(){
var计数=0;
如果(计数<4){
$(“#创建”)。单击(函数(){
$(本)。在(“”)之前;
}); 
计数++;
}
}

有谁能告诉我如何将注释限制为4吗?我一直在研究这个问题。

只需将
var count=0;
移到事件监听器外部,然后删除内部事件监听器:

var count = 0;                                       // outside the scope of the event listener function bellow so it won't get destroyed/recreated each time the function get called (ie when a clicks happen)
$("#create").click(function() {
    if(count < 4) {                                  // we haven't yet exceeded the limits
        $(this).before("<textarea></textarea>");     // don't attach another click event listener on #create (we are already in one) so just create the note.
        count++;
    }
});
var count=0;//超出下面的事件侦听器函数的作用域,因此不会在每次调用函数时(即发生单击时)销毁/重新创建该函数
$(“#创建”)。单击(函数(){
如果(计数<4){//我们还没有超过限制
$(this).before(“”;//不要在#create上附加另一个click事件侦听器(我们已经在一个侦听器中),所以只需创建注释即可。
计数++;
}
});

只需将var count=0移动到事件侦听器外部,然后移除内部事件侦听器:

var count = 0;                                       // outside the scope of the event listener function bellow so it won't get destroyed/recreated each time the function get called (ie when a clicks happen)
$("#create").click(function() {
    if(count < 4) {                                  // we haven't yet exceeded the limits
        $(this).before("<textarea></textarea>");     // don't attach another click event listener on #create (we are already in one) so just create the note.
        count++;
    }
});
var count=0;//超出下面的事件侦听器函数的作用域,因此不会在每次调用函数时(即发生单击时)销毁/重新创建该函数
$(“#创建”)。单击(函数(){
如果(计数<4){//我们还没有超过限制
$(this).before(“”;//不要在#create上附加另一个click事件侦听器(我们已经在一个侦听器中),所以只需创建注释即可。
计数++;
}
});

每次单击“创建”时,计算
textarea
元素的数量,然后确定是否应创建一个新元素:

$("#create").click(function() {
    var count = $("textarea");
    if (count.length < 4) {
        $(this).before("<textarea></textarea>");
    }
});
JS:

$(“#创建”)。单击(函数(){
变量计数=$(“textarea.sticky”);
如果(计数长度<4){
$(本)。在(“”)之前;
}
});

每次单击“创建”时,计算
textarea
元素的数量,然后确定是否应创建一个新元素:

$("#create").click(function() {
    var count = $("textarea");
    if (count.length < 4) {
        $(this).before("<textarea></textarea>");
    }
});
JS:

$(“#创建”)。单击(函数(){
变量计数=$(“textarea.sticky”);
如果(计数长度<4){
$(本)。在(“”)之前;
}
});

问题在于,您正在
单击事件处理程序中定义
计数
变量。因此,每次单击元素时,计数器都会重置。您也不应该在主处理程序中使用辅助单击处理程序

要解决此问题,请将
count
变量置于单击处理程序之外:

var count = 0;
$("#create").click(function() {
    if (count < 3) {
        $(this).before("<textarea></textarea>");
        count++;
    }
});
在增加计数之后

可以看出这是有效的


希望这有帮助!:)

问题是您正在
单击事件处理程序中定义
计数
变量。因此,每次单击元素时,计数器都会重置。您也不应该在主单击处理程序中使用辅助单击处理程序

要解决此问题,请将
count
变量置于单击处理程序之外:

var count = 0;
$("#create").click(function() {
    if (count < 3) {
        $(this).before("<textarea></textarea>");
        count++;
    }
});
在增加计数之后

可以看出这是有效的



希望这有帮助!:)

它不起作用,因为它不是一个全局变量。每次
$(“#创建”)。单击()
激发时,
count
变量重置为0。仔细看,您实际上已经创建了两次事件侦听器。它不起作用,因为它不是全局变量。每次
$(“#创建”)。单击()
激发时,
count
变量重置为0。仔细看,你实际上已经创建了两次事件侦听器。如果他在页面上的某个地方有其他文本区域呢?这不是解决方案。如前所述,可以添加一个类,并在选择器中使用该类,以确保只计算函数创建的
textarea
。是的,但您的答案没有反映这一点。你的答案是只计算所有的文本区域。之后,您将给出如何改进代码的建议。最好给出一个示例,说明如何使用类更改textareas,并在js代码中使用它。因为这实际上是一个答案。好多了+这就是为什么我喜欢这里!干杯如果他在页面的某个地方有其他文本区域呢?这不是解决方案。如前所述,可以添加一个类,并在选择器中使用该类,以确保只计算函数创建的
textarea
。是的,但您的答案没有反映这一点。你的答案是只计算所有的文本区域。之后,您将给出如何改进代码的建议。最好给出一个示例,说明如何使用类更改textareas,并在js代码中使用它。因为这实际上是一个答案。好多了+这就是为什么我喜欢这里!干杯如果我想在创建第四个音符后取消加号按钮,那么我该如何做呢?您可以使用
if(count==3){$(this.hide();}
。我已经更新了这个示例来展示:)如果我想在创建第四个便笺后取消加号按钮,那么我该怎么做呢?您可以使用
if(count==3){$(this).hide();}
。我已经更新了这个示例来展示:)如果我想让加号消失,那么在这种情况下,有没有js函数可以做到这一点?有jQuery的
hide
remove
。在
if
语句中,在
count++
之后添加另一个语句来检查
count==4