以字符串形式获取Javascript嵌套对象属性的完整地址

问题描述 投票:0回答:1

我想将DOM元素ID设置为等于嵌套对象属性的完整地址。如何将对象属性地址转换为字符串?

我欢迎为DOM元素命名的替代方法,因此很清楚它所引用的对象属性是什么

var myBowtie = {"Hazard":{"Name":"Hydrocarbons under Pressure"},
                "TopEvent":{"Name":"Loss of Containment"},
                "Cause1": {
                  "Name":"Cause 1",
                  "Barrier1": {
                    "Name":"Barrier 1",
                    "Type":null,
                    "Health":null,
                    "DegFactor1":{
                      "Name":null,
                      "Barrier1": {
                        "Name":null,
                        "Health":null
                        }
                     },
                    },
                },
                "Cause2": {
                  "Name":"Cause 2",
                  "Barrier0": {
                    "Name":"New Barrier 1",
                    "Type":null,
                    "Health":null,
                    "DegFactor1":{
                      "Name":null,
                      "Barrier1": {
                        "Name":null,
                        "Health":null
                        }
                     },
                    },
                },
                "Consequence2": {
                  "Name":"Consequence 2",
                  "Barrier1": {
                    "Name":"New Barrier 1",
                    "Type":null,
                    "Health":null,
                    "DegFactor1":{
                      "Name":null,
                      "Barrier1": {
                        "Name":null,
                        "Health":null
                        }
                     },
                    },
                },
             };

displayBowtie("Barrier",myBowtie.Cause1);

function displayBowtie(elementType,objectName){
    if (Object.entries(objectName).length > 0){ //ensure object has properties
    const Entries = Object.entries(objectName);
      for (const entry of Entries){ //loop through properties
        if (entry[0].includes(elementType)){ //loop through each property that matches the name
          //would like to have a string = "myBowtie.Cause1.Barrier1". I can then set this to a DOM element ID for accessing information later 
        }
      }
    }

}
javascript object dom
1个回答
0
投票

您的json无效,验证后,它看起来应如下所示,然后您可以通过.[]轻松访问子级>

如果您确定名称是唯一的,则可以通过id将其用作html对象的[C0

myBowtie.Cause1.Barrier1.Name
© www.soinside.com 2019 - 2024. All rights reserved.