我正在尝试使用对象数据中的字符串填充此列表。它出现'未定义'。它是对不起作用的数据对象的引用。为什么呢?
JS
data = [
{"q":"How much?", "ac":"20%", "a1": "1%", "a2": "10%", "a3": "5%"},
{"q":"What", "ac":"Ball", "a1": "Stone", "a2": "Bierd", "a3": "Carl"},
{"q":"When?", "ac":"1999", "a1": "2000", "a2": "2001", "a3": "2002"}
];
var q=0
window.onload = function() {
var ids =['a','b','c','d'];
var ans =['a1','a2','a3','ac'];
for (var j=0; j < ids.length; j++) {
var a = ans[j];
document.getElementsByClassName(ids[j])[0].innerHTML = data[q].a; //[<-- PROBLEM HERE]
};
}
HTML 的
<ul class="answers_quiz">
<li class="a"></li>
<li class="b"></li>
<li class="c"></li>
<li class="d"></li>
</ul>
答案 0 :(得分:4)
您需要使用方括号语法而不是点语法将变量用作属性访问器:
element.innerHTML = data[q][a];
点语法在data[q]
中查找名为“a”的属性。由于没有这样的东西,它返回undefined
。使用数组表示法时,它会查找名为a
包含的任何属性。
例如,在第一次迭代时,a === "a1"
时,data[q].a1
相当于data[q][a]
。