Javascript js中的if语句工作不正常

Javascript js中的if语句工作不正常,javascript,jquery,html,css,if-statement,Javascript,Jquery,Html,Css,If Statement,我的如果(i>0)语句不起作用,有什么建议吗 我希望它能防止我的初始表单框对 $('.remove')。如果i=0,请单击(函数() <html> <head> <script src="jquery.js"></script> <script type="text/javascript"> var i = 0; $('document').ready(function () {

我的
如果(i>0)
语句不起作用,有什么建议吗

我希望它能防止我的初始表单框对
$('.remove')。如果
i=0,请单击(函数()

<html>
  <head>
    <script src="jquery.js"></script>
    <script type="text/javascript">
      var i = 0;
      $('document').ready(function () {
        if (i > 0) {
          $('.remove').click(function () {
            i--;
            $(this).closest('form').remove();
          });
        }
        $('.clickme').click(function () {
          if (i < 5) {
            i++;
            $(".form1").last().clone(true, true).appendTo("body");
          } else {
            $(".form1")
          }
        });
      });
    </script>
  </head>

  <body>
     <h3>Invite your friends</h3>

    <form class="form1">
      <input id="email" name="email" />
      <a class="remove" href="#">Remove</a>
      <br/>
      <br/>
      <a class="clickme" href="#">Add</a>
    </form>
  </body>
</html>

var i=0;
$('document').ready(函数(){
如果(i>0){
$('.remove')。单击(函数(){
我--;
$(this).closest('form').remove();
});
}
$('.clickme')。单击(函数(){
如果(i<5){
i++;
$(“.form1”).last().clone(true,true).appendTo(“body”);
}否则{
$(“.form1”)
}
});
});
邀请你的朋友



在单击函数中使用语句,并添加逻辑运算符,如
&&
,以获得准确的结果

 $('.remove').click(function () {
     if (i > 0 && i < 5 ) {
         i--;
         $(this).closest('form').remove();
     }
 });

 $('.clickme').click(function () {
     if (i < 5 && i > 0) {
          i++;
          $(".form1").last().clone(true, true).appendTo("body");
     }
 });
$('.remove')。单击(函数(){
如果(i>0&&i<5){
我--;
$(this).closest('form').remove();
}
});
$('.clickme')。单击(函数(){
如果(i<5&&i>0){
i++;
$(“.form1”).last().clone(true,true).appendTo(“body”);
}
});

在单击函数中使用语句,并添加逻辑运算符,如
&&
,以获得准确的结果

 $('.remove').click(function () {
     if (i > 0 && i < 5 ) {
         i--;
         $(this).closest('form').remove();
     }
 });

 $('.clickme').click(function () {
     if (i < 5 && i > 0) {
          i++;
          $(".form1").last().clone(true, true).appendTo("body");
     }
 });
$('.remove')。单击(函数(){
如果(i>0&&i<5){
我--;
$(this).closest('form').remove();
}
});
$('.clickme')。单击(函数(){
如果(i<5&&i>0){
i++;
$(“.form1”).last().clone(true,true).appendTo(“body”);
}
});

再看看你的代码:

    if (i > 0) {
      $('.remove').click(function () {
        i--;
        $(this).closest('form').remove();
      });
    }
这会将事件处理程序绑定到所有
。仅当
i>0
时才删除
元素。在DOM就绪时,
i==0
因此处理程序永远不会被绑定。实际上,您试图实现的是在单击
.remove
时检查
i>0
。因此,检查需要在处理程序内部,而不是外部

    $('.remove').click(function () {
      if (i > 0) {
        i--;
        $(this).closest('form').remove();
      }
    });
编辑1:好吧,看起来你在找别的东西。你希望你的第一个
表单
不会从页面中删除,因为你不能再添加新表单了。问题是你的
i
表示页面上的表单数量(减去1,因为你从HTML中已有1个表单开始)与插入索引相反。有几种方法可以解决此问题:

  • 为第一个表单提供一个额外的类,并在克隆表单中删除该类。然后,您可以检查单击的
    .remove
    是否是
    表单的子类,该类具有类似
    $(this).closest('form')。hasClass('firstForm')
  • 手动将
    .remove
    链接仅添加到动态生成的表单。您可以构建一个模板元素,将其存储在变量中,然后将克隆附加到新表单
  • 检查已单击其
    .remove
    表单的索引。如果它是第一个,请不要将其删除
编辑2:好吧,所以你实际上并不关心是否删除了第一个表单,你只需要确保页面上至少有一个表单仍然存在。这就是为什么你一直在跟踪表单的数量。严重的,真正令人困惑的。如果你至少解释一下你的代码的理由,注释,这会有所帮助这不是事后的想法


无论如何,您应该对我的初始修复有足够的了解(在编辑之前)。

再看看您的代码:

    if (i > 0) {
      $('.remove').click(function () {
        i--;
        $(this).closest('form').remove();
      });
    }
这会将事件处理程序绑定到所有
。仅当
i>0
时才删除
元素。在DOM就绪时,
i==0
因此处理程序永远不会被绑定。实际上,您试图实现的是在单击
.remove
时检查
i>0
。因此,检查需要在处理程序内部,而不是外部

    $('.remove').click(function () {
      if (i > 0) {
        i--;
        $(this).closest('form').remove();
      }
    });
编辑1:好吧,看起来你在找别的东西。你希望你的第一个
表单
不会从页面中删除,因为你不能再添加新表单了。问题是你的
i
表示页面上的表单数量(减去1,因为你从HTML中已有1个表单开始)与插入索引相反。有几种方法可以解决此问题:

  • 为第一个表单提供一个额外的类,并在克隆表单中删除该类。然后,您可以检查单击的
    .remove
    是否是
    表单的子类,该类具有类似
    $(this).closest('form')。hasClass('firstForm')
  • 手动将
    .remove
    链接仅添加到动态生成的表单。您可以构建一个模板元素,将其存储在变量中,然后将克隆附加到新表单
  • 检查已单击其
    .remove
    表单的索引。如果它是第一个,请不要将其删除
编辑2:好吧,所以你实际上并不关心是否删除了第一个表单,你只需要确保页面上至少有一个表单仍然存在。这就是为什么你一直在跟踪表单的数量。严重的,真正令人困惑的。如果你至少解释一下你的代码的理由,注释,这会有所帮助这不是事后的想法


无论如何,您应该对我的初始修复有足够的了解(在编辑之前)。

将jquery更改为此,然后再试一次

$('document').ready(function () {
       var i = 0;
      $('.remove').click(function () {
        if (i > 0) {
          i--;
        $(this).closest('form').remove();
        }
      });

    $('.clickme').click(function () {
      if (i < 5) {
        i++;
        $(".form1").last().clone(true, true).appendTo("body");
      } else {
        $(".form1")
      }
    });
  });
$('document').ready(函数(){
var i=0;
$('.remove')。单击(函数(){
如果(i>0){
我--;
$(this).closest('form').remove();
}
});
$('.clickme')。单击(函数(){
如果(i<5){
i++;
$(“.form1”).last().clone(true,true).appendTo(“body”);
}否则{
$(“.form1”)
}
});
});

将jquery更改为此,然后重试

$('document').ready(function () {
       var i = 0;
      $('.remove').click(function () {
        if (i > 0) {
          i--;
        $(this).closest('form').remove();
        }
      });

    $('.clickme').click(function () {
      if (i < 5) {
        i++;
        $(".form1").last().clone(true, true).appendTo("body");
      } else {
        $(".form1")
      }
    });
  });
$('document').ready(函数(){
var i=0;
$('.remove')。单击(函数(){
如果(i>0){
我--;
$(this).closest('form').remove();