【问题标题】:absence of value in javascript (undefined)javascript 中没有值(未定义)
【发布时间】:2014-02-28 14:14:24
【问题描述】:

我有带有键值和对的对象列表。当我将它们分开以在特定字段上显示每个信息时。 我收到类型错误 data.validation[i].user is undefined 但我检查了变量是否已被赋值。

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>");
    }
  }

$("#mobile") 表示输入字段Id

热烈欢迎任何想法

【问题讨论】:

  • javascript数组索引从0开始到length-1;
  • 谢谢@xff1874。我知道那个。但我错过了那个东西

标签: javascript undefined keyvaluepair object-properties


【解决方案1】:

仅在此处使用少于游览条件。因为它从 0,1,2,.... 开始。

for(var i =0;i<size;i++)

你的长度是 6,但是当最后一次获取时,这应该是

data.validation[5].user

你正确的代码应该是:

  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>");
        }
      }

【讨论】:

  • 啊..我不知道我是怎么错过的。太棒了!我很抱歉我试图投票但声誉较低@Siddique Mahsud
【解决方案2】:

检查你的数组结构:

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"},
 ]};

这就像(伪代码):

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!!

所以你必须改变你的结构..

【讨论】:

  • 感谢您在结构方面提供的优质信息和快速响应。
【解决方案3】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-06-14
    • 2016-05-08
    • 2020-11-10
    • 2020-02-24
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多