以下是我的剧本
var err=activityLocal.message;
var text="";
var i;
for (i = 0; i < err.length; i++) {
text+= err[i].message +";";
}
document.write(text);
此处activityLocal.message
的值如下所示:
[{
"message": "Data Source 'TestDataSource' is in a state incompatible with this operation at server 'manaed_server_4'.",
"severity": "FAILURE"
}, {
"message": "Data Source 'TestDataSource' is in a state incompatible with this operation at server 'managed_server_3'.",
"severity": "FAILURE"
}];
但是输出是undefined
,看起来JS引擎与activityLocal.message
变量中的点混淆了。我该如何解决这个错误?
答案 0 :(得分:1)
在你的代码中,他们是变量名称的问题,它不应该包含点,这是非法的。
var activityLocal_message = [{
"message": "Data Source 'TestDataSource' is in a state incompatible with this operation at server 'manaed_server_4'.",
"severity": "FAILURE"
}, {
"message": "Data Source 'TestDataSource' is in a state incompatible with this operation at server 'managed_server_3'.",
"severity": "FAILURE"
}];
var err=activityLocal_message;
var text="";
var i;
for (i = 0; i < err.length; i++) {
text+= err[i].message +";";
//console.log(err[i].message);
}
console.log(text);
或者如果你真的想和dot运算符一起使用试试这个
您不能以点表示法使用变量(不使用eval,您不想这样做)。使用点表示法,属性名称基本上是常量。
myObj.propName
// is equivalent to
myObj["propName"]
答案 1 :(得分:0)
您可以使用数组map
函数遍历activityLocal.message
中将返回strings
数组的所有消息,并使用数组join
函数连接它们,如下所示:
var err= [{
"message": "Data Source 'TestDataSource' is in a state incompatible with this operation at server 'manaed_server_4'.",
"severity": "FAILURE"
}, {
"message": "Data Source 'TestDataSource' is in a state incompatible with this operation at server 'managed_server_3'.",
"severity": "FAILURE"
}];
var text= err.map(function(e) {
return e.message;
}).join(";");
alert(text);
答案 2 :(得分:0)
如果它有帮助,请参阅plunker。看起来在数组循环中值即将到来,问题可能是在html中设置它。 Plunker
答案 3 :(得分:-4)
如果您的意思是要将点用作变量名,则根本不可能。
如果要将其用作对象变量,可以通过object.variableName
访问它。 E. g。假设您的对象名为myObj
,并且分配给该对象的变量称为myVar
,您可以使用此调用访问它:myObj.myVar
。或者您也可以使用for(或现代JavaScript运行时环境中的foreach)循环迭代对象。