Javascript 使用for in在对象中循环

Javascript 使用for in在对象中循环,javascript,for-in-loop,Javascript,For In Loop,有人能帮我吗?被困了一段时间,我需要做的就是打印出我的对象的属性,有人知道为什么这不起作用吗 <!DOCTYPE html> <html> <head> <script type="text/javascript"> function person(name, dateOfBirth, nationality){ this.name = name; this.dateOfBirth = dateOfBir

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

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

职能人员(姓名、出生日期、国籍){
this.name=名称;
this.dateOfBirth=出生日期;
国籍=国籍;
}
var mark=新人(“mark oshea”,25,“爱尔兰”);
var text=“”;
用于(x英寸标记){
文本+=标记[x];
}

A
用于。。。在
中,循环将循环给定数组/对象的所有属性。 您尝试使用属性(您实际需要的属性)访问对象

在您的情况下,
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>

职能人员(姓名、出生日期、国籍){ this.name=名称; this.dateOfBirth=出生日期; 国籍=国籍; } var text=“”; var mark=新人(“mark oshea”,25,“爱尔兰”); 用于(x英寸标记){ text+=标记[x]+“”; } var person_段落=document.getElementById(“person”); person_paragration.innerHTML=文本;

有关DOM函数的更多信息,我建议您进行修改。

您的文本变量被困在For循环的范围内。在for循环之外添加这一行可以解决此问题,如本小提琴所示:


标记[x]应该是x。你是说打印属性的值还是属性的名称?@Sebas我把这个问题解释为属性的名称。什么是“不起作用”这个问题的另一个解决方案是
text=Object.keys(mark)。join(“”)
,避开你的问题将把foo的键放入x,而不是值。您将构建一个字符串,其中包含
name dateofBirth national
,而不是
mark oshea 25 irish
@MarcB“打印属性”,我认为这意味着属性的名称而不是值。询问者应该澄清是的,但是你说“循环所有的值,…而不是键”。这完全是逆来顺受,我的意思是,我很重视我的道歉。谢谢大家,非常感谢。
var text = '';