在中使用for循环遍历对象

looping through an object using a for in

本文关键字:循环 遍历 对象 for      更新时间:2023-09-26

有人能帮我吗?被卡住了一段时间,我所需要做的就是打印出我的对象的属性,有人知道为什么这不起作用吗?

<!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>

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

在您的情况下,如果您想要属性,text += x;应该是您想要的。

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

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

您的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。

您的文本变量被捕获在for循环的作用域中。在for循环之外添加这一行可以解决这个问题,如图所示:

http://jsfiddle.net/7z0qonb3/

var text = '';