繁体   English   中英

如何访问包含点的变量?

[英]How do I access a variable which contains a dot?

以下是我的脚本

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变量中的点混淆了。 如何解决此错误?

在您的代码中,它们是变量名的问题,它不应该包含点,这是非法的。

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

或者如果你真的想使用点运算符试试这个

您不能在点表示法中使用变量(缺少使用 eval,您不想这样做)。 使用点表示法,属性名称本质上是一个常数。

myObj.propName
// is equivalent to
myObj["propName"]

您可以使用数组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);

该数组能够循环值,但问题可能是在 html 中设置它。 下面是代码,您也可以签入Plunker


// Code goes here

var activityLocal = {};
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 + ';';
  //alert(text);
}
document.getElementById('showtext').innerHTML = 'tttt' + text;


如果您的意思是要使用点作为变量名,那根本不可能。

如果您想将其用作对象变量,则可以通过object.variableName访问它。 例如。 假设您的对象名为myObj并且分配给该对象的变量名为myVar您可以通过以下调用访问它: myObj.myVar 或者,您也可以使用 for(或现代 JavaScript 运行时环境中的 foreach)循环遍历对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM