如何在每个循环中选择空输入

how to select empty input in each loop?

本文关键字:选择 输入 循环      更新时间:2023-09-26

我正在尝试循环访问一种形式的输入,并将所有输入值推送到数组中,以便稍后在我的代码中进行一些操作。另一方面,当我遍历每个输入时,我想检查所选输入是否为空,如果为空,我想将其值设置为"-"。这是我目前所拥有的——

当我运行并测试此代码时,没有输出正确的值。我错过了什么?

$('.NewTeam').eq(i).find('tr').each(function(event) { 
  //each row is one player
  var Player = []; //A new array for every player
  TeamInfo = TeamInfo + "'n Player " + counter + "'n";
  $(this).find(":input").each(function() {
    if ($(this).value == "") {
      $(this).val("--");
      TeamInfo = TeamInfo + this.value + "  , " + " ";
      Player.push(this.value);
    }
    TeamInfo = TeamInfo + this.value + "  , " + " ";
    Player.push(this.value);
  });
  counter++;
  TeamArray.push(Player);
});

我认为你混淆了价值的使用。 $(this).value不是有效的属性。jQuery有一个返回this.value的方法val()。因此,您需要始终如一地致电$(this).val()。下面我删除了 if 语句并实例化了一个名为 value 的 tmp 变量。我分配它的方式是var value = $(this).val() || "--";这说的是使值等于该节点的值,除非它是假的,然后将其设置为 "--" .我还删除了字符串中一些不必要的串联。

  $('.NewTeam').eq(i).find('tr').each(function (event) {   //each row is one player
        var Player = []; //A new array for every player
        TeamInfo = TeamInfo +"'n Player " + counter + "'n";
        $(this).find(":input").each(function(){
          var value = $(this).val() || "--";
          TeamInfo = TeamInfo + value + "  ,  ";
          Player.push(this.value);
        });
        counter++;
        TeamArray.push(Player);
  });

如果您有任何其他问题,请告诉我

两个问题:

1. $(this).value

你应该写this.value$(this).val(),但不能写$(this).value

所以这个

       if ($(this).value == ""){

应该变成:

       if ($(this).val() === ""){

2. 代码重复

您在if块内部和外部都这样做:

       TeamInfo = TeamInfo + this.value + "  , " + " ";
       Player.push(this.value);

因此,如果if条件为真,它将发生两次。所以最好不要在if块内做。

和。。。

在将元素推送到TeamArray数组时递增计数器。如果您希望计数器计算数组中的元素数,您可以为自己节省一行(和变量),因为这已经在 TeamArray.length 中可用。