javascript中缺少值(未定义)

javascript中缺少值(未定义),javascript,undefined,keyvaluepair,object-properties,Javascript,Undefined,Keyvaluepair,Object Properties,我有一个带有键值和对的对象列表。当我分离这些对象以显示特定字段上的每个信息时。 我正在获取类型错误数据。验证[I]。用户未定义 但是我已经检查了变量是否被赋值 var data = {validation:[ {"user":"user may not be empty"}, {"date":"Date may not be null"}, {"mobile":"passengerMobile may not be empty"}, {"mobileSize":"passengerMobile

我有一个带有键值和对的对象列表。当我分离这些对象以显示特定字段上的每个信息时。 我正在获取类型错误数据。验证[I]。用户未定义 但是我已经检查了变量是否被赋值

var data = {validation:[
{"user":"user may not be empty"},
{"date":"Date may not be null"},
{"mobile":"passengerMobile may not be empty"},
{"mobileSize":"passengerMobile size must be greater than 11"},
{"name":"passengerName may not be empty"},
{"nameSize":"passengerName size must be between 2 and 30"},
 ]};

var size = data.validation.length;

for(var i =0;i<=size;i++){
if(data.validation[i].user){
 $("#username").html("<p>"+data.validation[i].user+"</p>");
  }
  if($("#mobile").val().length == 0){
    $("#mobilesize").html("<p>"+data.validation[i].mobile+"</p>");
    }
    else if($("#mobile").val().length >= 1){
    $("#mobilesize").html("<p>"+data.validation[i].mobilesize+"</p>");
    }
  }
var数据={验证:[
{“用户”:“用户不能为空”},
{“日期”:“日期不能为空”},
{“移动”:“乘客移动电话不能为空”},
{“移动”:“乘客移动大小必须大于11”},
{“名称”:“passengerName不能为空”},
{“nameSize”:“passengerName大小必须介于2和30之间”},
]};
变量大小=data.validation.length;
对于(变量i=0;i=1){
$(“#mobilesize”).html(“”+data.validation[i].mobilesize+”

”); } }
$(“#mobile”)表示输入字段Id


欢迎您提出任何想法

在这里,您只需在游览条件下使用较少的资源即可。因为它从0,1,2开始

for(var i =0;i<size;i++)
正确的代码应该是:

  var size = data.validation.length;

    for(var i =0;i<size;i++){
    if(data.validation[i].user){
     $("#username").html("<p>"+data.validation[i].user+"</p>");
      }
      if($("#mobile").val().length == 0){
        $("#mobilesize").html("<p>"+data.validation[i].mobile+"</p>");
        }
        else if($("#mobile").val().length >= 1){
        $("#mobilesize").html("<p>"+data.validation[i].mobilesize+"</p>");
        }
      }
var size=data.validation.length;
对于(变量i=0;i=1){
$(“#mobilesize”).html(“”+data.validation[i].mobilesize+”

”); } }
检查您的阵列结构:

var data = {validation:[
{"user":"user may not be empty"},
{"date":"Date may not be null"},
{"mobile":"passengerMobile may not be empty"},
{"mobileSize":"passengerMobile size must be greater than 11"},
{"name":"passengerName may not be empty"},
{"nameSize":"passengerName size must be between 2 and 30"},
 ]};
这就像(伪代码):


因此,您必须更改您的结构。

对于验证中的某些值,您没有“用户”,因此未定义

请使用此代码避免此类问题:

if(typeof data.validation[i].user != "undefined" && data.validation[i].user){
    $("#username").html("<p>"+data.validation[i].user+"</p>");
 }
if(type of data.validation[i].user!=“undefined”&&data.validation[i].user){
$(“#username”).html(“”+data.validation[i].user+”

”); }
javascript数组索引从0开始,长度为1;谢谢@xff1874。我知道那个。但是我错过了那个东西。我不知道我是怎么错过的。太好了!我很抱歉,我试着投票,但没有那么好的声誉@Siddique MahsudThanks,因为它在结构上有很好的信息,而且反应也很快。
data = object
data.validation = array
data.validation[0] = object
data.validation[0].user = "user may not be empty"
data.validation[1].user = undefined!!
data.validation[2].user = undefined!!
data.validation[3].user = undefined!!
if(typeof data.validation[i].user != "undefined" && data.validation[i].user){
    $("#username").html("<p>"+data.validation[i].user+"</p>");
 }