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