簡體   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