x[[1]]

objVar = "one";
varID = ["Result1", "Result2"];
var one = {
Result1: 5,
Result2: 100
}
for (i = 0; i < varID.length; i++) {
textID = '#' + varID[i];
document.querySelector(textID).innerHTML = "??";
}
&#13;
代替问号(<div id="Result1"></div>
<div id="Result2"></div>
),我需要获得??
的值。这可能是直接的(即没有objVar[i]
)?
答案 0 :(得分:1)
window[objVar][ varID[i] ]
你应该选择另一个数据结构:
var lookup = {
one: {
Result1: 5,
Result2: 100
}
};
...因为你应该尽量不要使用window
。
答案 1 :(得分:1)
[编辑] :正如您所说,objVar
也可以更改,因此您可以将one
对象作为父对象的属性并访问它。如果没有,那么您可以将其设为全局并将其用作window
对象的属性,但我不建议创建全局变量。
您可以使用括号表示法访问对象one
上的属性,如下所示:
var masterObj = {
one : {
Result1: 5,
Result2: 100
},
two: : {
Result1: 5,
Result2: 100
},
}
document.querySelector(textID).innerHTML = masterObj[objVar][varID[i]];
OR
document.querySelector(textID).innerHTML = window[objVar][varID[i]];//for global variable
答案 2 :(得分:1)
你可以这样称呼:
super
实际上,objVar可以改变。取决于此,对象需要访问。
基于此评论:
... = one[varID[i]];
... = window[objVar][varID[i]]
&#13;
objVar = "one";
varID = ["Result1", "Result2"];
var one = {
Result1: 5,
Result2: 100
}
for (i = 0; i < varID.length; i++) {
textID = '#' + varID[i];
document.querySelector(textID).innerHTML = window[objVar][varID[i]];
}
&#13;
其他示例可以使用<div id="Result1"></div>
<div id="Result2"></div>
:
Object.keys()
&#13;
objVar = "one";
var one = {
Result1: 5,
Result2: 100
}
Object.keys(window[objVar]).forEach(
res => document.querySelector('#'+res).innerHTML = one[res]
)
&#13;
答案 3 :(得分:0)
我使用console.log进行测试,你可以使用document.querySelector。
var objVar = {
one: {
Result1: 5,
Result2: 100
},
two: {
Result3: 12,
Result4: 13
}
};
var varID = ["Result1", "Result2"];
var textID;
//chose object from user or any way you want ...
var customObject = "one";
for (let i = 0; i < varID.length; i++) {
textID = '#' + varID[i];
console.log(objVar[customObject][varID[i]]);
}