1

我试图让我的表单字段在 onchange 事件之后提交。

返回的 Json 值如下所示:

{ "data": [ { "name":"p_data1,KEY=1", "value":"2", "error":"no error" } ] } 

我将向此字符串添加一个数组以指定任何其他也需要更新的字段(例如“总计”),如下所示:

{ "data": [ { "name":"p_data1,KEY=1", "value":"2", "error":"no error", "toUpdate": [ { "name":"p_total_data1" , "value":"999" } ] } ] } 

所以我只想在 toUpdate 数组存在时运行更新总脚本。我的问题是如果我使用 if 语句

if(typeof results.data[0].toUpdate[0].name == 'undefined'){}

或者

if(null != results.data[0].toUpdate[0].name){}

或者

if(results.data[0].toUpdate[0].name.length){}

都给出错误“results.data[0].toUpdate[0].name is undefined”。如何测试它是否已定义?

4

2 回答 2

4

results.data[0].toUpdate在尝试访问其属性之前,您需要检查是否存在:

if (results.data[0].toUpdate && results.data[0].toUpdate[0].name){
  // perform the update
}

如果第一个条件评估为假(或任何“假”值),则&&操作员将短路并且根本不会评估第二个条件,从而防止您看到错误。

于 2012-06-29T05:06:06.287 回答
1

检查result对象的所有元素是否undefined存在

if(results !='undefined' && results.data!='undefined' && results.data[0]!='undefined' && results.data[0].toUpdate != 'undefined' && results.data[0].toUpdate[0] != 'undefined' && typeof results.data[0].toUpdate[0].name != 'undefined')
{
  //
}
else
{
 //
}
于 2012-06-29T05:11:17.910 回答