遍历对象-Javascript

遍历对象-Javascript,javascript,prototype,Javascript,Prototype,我绝对不是javascript方面的专家,也不是在努力学习 我创建了一段简单的代码,它添加了一个person对象,并使用一些格式不好的字符串以HTML格式显示它。由于我有两个人(p1和p2),我希望将他们都添加到div“output”中。其思想是创建每个person对象的列表,并将属性放置在列表项中 我的问题是-如何通过迭代显示每个person对象 多谢各位 <body> <div id="output"></div> <script&

我绝对不是javascript方面的专家,也不是在努力学习

我创建了一段简单的代码,它添加了一个person对象,并使用一些格式不好的字符串以HTML格式显示它。由于我有两个人(p1和p2),我希望将他们都添加到div“output”中。其思想是创建每个person对象的列表,并将属性放置在列表项中

我的问题是-如何通过迭代显示每个person对象

多谢各位

<body>
    <div id="output"></div>

    <script>
      function person (fname, lname, age, birth)
      {
        this.firstname = fname;
        this.lastname = lname;
        this.age = age;
        this.birth = birth;
      }

      var p1 = new person("John", "Dhoe", 22,  new Date("December 13, 1973 11:13:00").toLocaleDateString());
      var p2 = new person("Mr", "Andersson", 56,  new Date("October 14, 1968 11:13:00").toLocaleDateString());

      p1.birthdate = function () {
        return "<ul>" + 
                  "<li>" + "<b>Name: </b>" + this.firstname + " " + this.lastname + "</li>" +
                  "<li>" + "<b>Age: </b>" + this.age + "</li>" +
                  "<li>"+ "<b>Birthdate: </b>" +  this.birth + "</li>" +
                "</ul>";
      }

      output.innerHTML = p1.birthdate();

    </script>
  </body>

职能人员(fname、lname、年龄、出生)
{
this.firstname=fname;
this.lastname=lname;
这个。年龄=年龄;
这个.出生=出生;
}
变量p1=新人(“约翰”,“德霍”,22,新日期(“1973年12月13日11:13:00”)。toLocaleDateString();
变量p2=新人(“先生”,“安德森”,56岁,新日期(“1968年10月14日11:13:00”)。toLocaleDateString();
p1.出生日期=函数(){
返回“
    ”+ “
  • ”+“名称:“+this.firstname+”“+this.lastname+”
  • ”+ “
  • ”+“年龄:+this.Age+”
  • ”+ “
  • ”+“出生日期:“+this.birth+”
  • ”+ “
”; } output.innerHTML=p1.birthdate();
只需创建一个Person数组,然后在该数组上迭代即可。试着这样做:

var persons = [
    new person("John", "Dhoe", 22,  new Date("December 13, 1973 11:13:00").toLocaleDateString()),
    new person("Mr", "Andersson", 56,  new Date("October 14, 1968 11:13:00").toLocaleDateString())
]; // An array of persons...

var html = '';
for(var i = 0; i < persons.length; i++){ // Iterate over all persons
    html += persons[i].birthdate();      // And add the HTML for each person to `html`
}
output.innerHTML = html;                 // Finally, add the persons html to the output.
var个人=[
新人(“John”,“Dhoe”,22,新日期(“1973年12月13日11:13:00”)。toLocaleDateString(),
新人(“先生”,“安德森”,56岁,新日期(“1968年10月14日11:13:00”)。toLocaleDateString()
]; // 一群人。。。
var html='';
对于(var i=0;i
生日
函数放入您的
个人
函数中。然后将所有人放入一个数组中,并为每个人调用函数

for (var i= 0; i< people.length; i++){
    var output = document.getElementById("output");  
    output.innerHTML =  output.innerHTML + people[i].birthdate();
}
for(var i=0;i

嗯,你可以这样做

我们使用返回数据html表示的方法扩展了
person
。它可用于每个新创建的
人员
,以便
p1
p2
都可以使用它。 我们使用
p1.birthdate()
p2.birthdate()
手动输出数据。但是,如果我们需要许多
来处理,我们希望将
存储到某个数组中,然后遍历它

var persons=[];
职能人员(fname、lname、年龄、出生){
this.firstname=fname;
this.lastname=lname;
这个。年龄=年龄;
这个.出生=出生;
}
person.prototype.birthdate=函数(){
var html='';
html+=“
    ”+ “
  • ”+“名称:“+this.firstname+”“+this.lastname+”
  • ”+ “
  • ”+“年龄:+this.Age+”
  • ”+ “
  • ”+“出生日期:“+this.birth+”
  • ”+ “
”; 返回html; } persons.push(新人物(“John”,“Dhoe”,22,新日期(“1973年12月13日11:13:00”)。toLocaleDateString()); persons.push(新人(“Mr”,“Andersson”,56岁,新日期(“1968年10月14日11:13:00”)。toLocaleDateString()); var output=document.getElementById('output'); 对于(变量i=0;i

那么,问题是什么呢?我应该找到答案的。。Thanksbe建议您需要将
birthdate
函数放入您的对象中,尽管您可以从我在回答中发布的小提琴中看到,不要在循环的每次迭代中修改
innerHTML
。这实际上很有意义,也很容易理解。非常感谢。我编辑了上面的代码片段,所以现在所有的
person
s都存储在一个数组中。然后,通过该数组的循环填充输出块。