-1

这是我的代码:

function Todo(id, task, who, dueDate) {
    this.id = id;
    this.task = task;
    this.who = who;
    this.dueDate = dueDate;
    this.done = false;
}

var todos = new Array();

window.onload = init;

function init() {
    var submitButton = document.getElementById("submit");
    submitButton.onclick = getFormData;
    var searchButton = document.getElementById("button");
    searchButton.onclick = search;
}

//function creates objects    

function search() {
      for (var i = 0; i < todos.length; i++) {
         var todoObj = todos[i].who;
         console.log(todoObj[0]);
        }
    }

我创建的两个对象的值分别是“jane”和“scott”。这在控制台中返回的首先是“j”,然后是“s”。所以它正在访问两个对象中的第一个字母。当我只输入 console.log(todoObj); 它返回“jane”和“scott”。我需要能够单独访问每个名称。我怎样才能做到这一点?

4

5 回答 5

2
todos = [ { who:"jane", ...}, {...} ]
todos[i] = { who:"jane", ...}
todos[i].who = "jane"
todos[i].who[0] = 'j'
于 2013-02-20T19:44:28.283 回答
2

摆脱索引。你已经拥有了价值。

 console.log(todoObj);
于 2013-02-20T19:44:38.497 回答
0
var todoObj = todos[i].who; // returns the string jane or scott depending on the index
console.log(todoObj[0]); // will print out the first character of the string assigned in todoObj

你需要做的是

var todoObj = todos[i]; // returns the Todo object
console.log(todoObj.who);
于 2013-02-20T20:33:15.057 回答
0

您正在访问第一个console.log(todoObj[0]),因此会出现“f”或“s”

于 2013-02-20T19:45:25.637 回答
0

当你这样做时

var todoObj = todos[i].who;

你把当前对象的 who 字段放到 todoObj 中。因此, todoObj[1] 等于 who 数组的第一个块。如果您想处理整个对象,请执行以下操作:

var todoObj = todos[i]

并得到名字

 todoObj.who
于 2013-02-20T19:56:51.883 回答