如何打印出对象的所有属性

时间:2015-05-15 11:57:46

标签: javascript jquery d3.js

我使用D3,当我将鼠标悬停在某个节点上时,我希望显示一个文本框,其中会写入所有节点属性。我已经制作了一个文本框,我能够将我知道的属性写入该文本框:

function onHover(){
    d3.selectAll("#nodeAttributes")
            .text(function() { return (d.type); }) //random attribute i know            
            ;
}

这是在鼠标悬停'在节点上。但是如果我不知道节点有什么属性呢?如何遍历所有属性并将所有属性写入文本框。我的数据与此类似:

nodes: [
        {
          "type": "o",
          "name": "fred",
          "age": "16",
          "class": "maths",
.
.
.
.

        },

我希望输出的文字看起来像:

type: o
name: fred
age: 16
class: maths

我不确定如何遍历所选节点的每个属性(d)

提前致谢

1 个答案:

答案 0 :(得分:2)

您可以使用以下代码迭代对象:

function onHover() {
  d3.selectAll('#nodeAttributes').html(function (d) {
    var str = '';
    for (var key in d) {
      str += key + ': ' + d[key] + '<br/>'
    }
    return str;
  }
  );
}