使用for in循环遍历对象

时间:2014-11-05 18:57:56

标签: javascript for-in-loop

任何人都可以帮助我吗?被困一段时间,我需要做的就是打印出我对象的属性,任何人都知道为什么这不起作用?

<!DOCTYPE   html>
<html>
<head>
<script type="text/javascript">
    function person(name, dateOfBirth, nationality){
        this.name = name;
        this.dateOfBirth = dateOfBirth;
        this.nationality = nationality;
    }

     var mark = new person("mark oshea",25,"irish");
    var text = ""; 
    for(x in mark) {
       text += mark[x];
    }


</script>
</body>
</html>

3 个答案:

答案 0 :(得分:1)

for ... in循环将循环遍历给定数组/对象的所有属性。 您尝试使用属性(您真正想要的)访问您的对象。

如果您需要这些属性,text += x;应该是您正在寻找的内容。

如果您想获取对象的值,可以使用forEach,例如:

mark.forEach( function(value){
    text += value; 
});

答案 1 :(得分:0)

你的html缺少关闭/打开元素,而你没有声明'var text'。 试试这样:

<!DOCTYPE   html>
<html>
<head>
</head>
<body>
<h1>Person</h1>
<p id="person"></p>

<script type="text/javascript">
  function person(name, dateOfBirth, nationality){
      this.name = name;
      this.dateOfBirth = dateOfBirth;
      this.nationality = nationality;
  }

  var text = "";
  var mark = new person("mark oshea",25,"irish");
  for(x in mark) {
     text += mark[x] + " ";
  }

  var person_paragraph = document.getElementById("person");
  person_paragraph.innerHTML = text;
</script>
</body>
</html>

有关DOM功能的更多信息,我建议摆弄mdn

答案 2 :(得分:0)

您的文本变量被困在for循环的范围内。在for循环之外添加这一行解决了它,正如这个小提琴所示:

http://jsfiddle.net/7z0qonb3/

var text = '';