为什么这个对象引用不起作用?

时间:2012-02-02 12:35:34

标签: javascript

我正在尝试使用对象数据中的字符串填充此列表。它出现'未定义'。它是对不起作用的数据对象的引用。为什么呢?

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>

1 个答案:

答案 0 :(得分:4)

您需要使用方括号语法而不是点语法将变量用作属性访问器:

element.innerHTML = data[q][a];

点语法在data[q]中查找名为“a”的属性。由于没有这样的东西,它返回undefined。使用数组表示法时,它会查找名为a包含的任何属性。

例如,在第一次迭代时,a === "a1"时,data[q].a1相当于data[q][a]