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

时间:2016-04-21 18:21:56

标签: javascript jquery

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

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

$('.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);

});

2 个答案:

答案 0 :(得分:1)

两个问题:

1。 $(本)。价值

您应该写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已经可以使用它。

答案 1 :(得分:1)

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

  $('.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);
  });

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