如何在 javascript 或使用 jquery 中的 for-loop 问题中显示消息

How to show message in for-loop issues in javascript or using jquery

我试了将近两天了,还是不行。也许有人可以帮助 javascript 循环技术高超的人。

我有这个代码:

$(function(){
 var len = $('#groupContainer > div').length;
 var arr = [];
 for(var i=0; i < len; i++){

    var number = $('#number_' + [i + 1]);
    var date = $('#date_' + [i + 1]);
    var count = i + 1;
    var message ="";
    console.log(number)

    var a = number.map(function(){
        return this.value;
    });

    var b = date.map(function(){
        return this.value;
    });

    var newObj = {number: a[0], date: b[0]}
    arr.push(newObj);

}

var message = "";
 for(var c = 0; c < arr.length; c++)
 {        


    for(var d in arr[c])
    {
        message += 'Group: ' + [c + 1] + '\n';
        if(arr[c].hasOwnProperty(d))
        {      
            if(arr[c][d] == "")
            {

                message +=  d + ' is required!\n';
            }

        }
        message = message + "\n";
    }


 }
 alert(message);
});

预期输出:

如果组 1 中的所有字段都已填写且组 2 未显示提示框:

   Group 2:
   Number is required!
   Date is required!

如果所有字段都未填写显示:

   Group 1, 2 Number is required!
   Group 1, 2 Date is required!

如果所有字段都已填满,则什么也不做。

这是我的 FIDDLE

你的 code here is too much complicated 应该被简化。

您需要将消息保存在 object 中,稍后循环查看它们以按顺序显示消息。

var messages = {};
var message = "";

for(var c = 0; c < arr.length; c++)
{        
    var groupMessage = false;
    for(var d in arr[c])
    {

        if(arr[c].hasOwnProperty(d))
        {      
            if(arr[c][d] == "")
            {
                if(messages[d]==undefined) {
                    messages[d]={groups:[]};
                }
                messages[d].groups.push(c+1);
            }

        }            
    }

    var lastgroup = "";

    for(i in messages) {
      m = messages[i];      
      if(m.groups.join(",")==lastgroup) {
        message = message.replace("Group "+m.groups.join(",")+" ","Group "+m.groups.join(",")+":\n");
        message+=i+" is required!\n";
      }
      else {
          message+="Group "+m.groups.join(",")+" "+i+" is required!\n";
      }
      lastgroup = m.groups.join(",");
    }

  // .....
}

$(function(){
    var len = $('#groupContainer > div').length;
  var arr = [];
    for(var i=0; i < len; i++){

        var number = $('#number_' + [i + 1]);
        var date = $('#date_' + [i + 1]);
        var count = i + 1;
        var message ="";
        var a = number.map(function(){
            return this.value;
        });
        var b = date.map(function(){
            return this.value;
        });
        
        var newObj = {number: a[0], date: b[0]}
  arr.push(newObj);
    }
   console.log(arr);
    var message = "";
    for(var c = 0; c < arr.length; c++)
    {        
        haveErrorInGroup = false;
        for(var d in arr[c])
        {
            if(arr[c].hasOwnProperty(d))
            {      
                if(arr[c][d] == "")
                {
                    if(!haveErrorInGroup){
                        haveErrorInGroup= true;
                       message += 'Group: ' + [c + 1] + '\n';
                    }
                       
                    message +=  d + ' is required!\n';
                }
                
            }
            
        }
        
        
    }
    alert(message);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="groupContainer">
    <div id ="profileGroup1">
        <div class="item">
            Number1: <input type="text" id="number_1" value="20">
        </div>
        <div class="item">
           Date1: <input type="text" id="date_1" value="">
        </div>
    </div>
    <div id ="profileGroup2">
        <div class="item">
            Number2: <input type="text" id="number_2" value="2015-05-05">
        </div>
        <div class="item">
            Date2: <input type="text" id="date_2" value="">
        </div>
    </div>
</div>